相关疑难解决方法(0)

Python使用的字符串比较技术

我想知道Python如何进行字符串比较,更具体地说,它是如何在使用小于(<)或大于(>)运算符时确定结果的.

例如,如果我把print('abc' < 'bac')我得到True.我理解它比较了字符串中的相应字符,但是由于缺乏更好的术语而不清楚为什么还有更多的字符,"权重"放在第一个字符串中的a小于b(第一个位置)而不是a在第二个字符串(第二个位置)中小于b的事实.

python string comparison

51
推荐指数
4
解决办法
8万
查看次数

Python没有正确排序unicode.Strcoll没有帮助

我在OSX上以及Linux上使用Python 2.5.1和2.6.5中的unicode排序对排序列表有问题.

import locale   
locale.setlocale(locale.LC_ALL, 'pl_PL.UTF-8')
print [i for i in sorted([u'a', u'z', u'?'], cmp=locale.strcoll)]
Run Code Online (Sandbox Code Playgroud)

哪个应该打印:

[u'a', u'?', u'z']
Run Code Online (Sandbox Code Playgroud)

而是打印出来:

[u'a', u'z', u'?']
Run Code Online (Sandbox Code Playgroud)

总结一下 - 看起来好像strcoll坏了.尝试使用各种类型的变量(fe.非unicode编码的字符串).

我做错了什么?

此致,Tomasz Kopczuk.

python unicode locale

21
推荐指数
3
解决办法
7055
查看次数

标签 统计

python ×2

comparison ×1

locale ×1

string ×1

unicode ×1