按字母顺序排列非英语字符(ç;、ş;、ö;)(Python-3x)
有这样一个数组-->[[text1,number1],[text2,number2]…]按字母顺序排列非英语字符(ç;、ş;、ö;)(Python-3x),python,arrays,python-3.x,sorting,arraylist,Python,Arrays,Python 3.x,Sorting,Arraylist,有这样一个数组-->[[text1,number1],[text2,number2]…] 我想对这个数组进行排序(按第一个元素(文本))。这些文本包含不同的字符,如ı、ç、ö。。。我找到了定位方法,但无法使用它。我还想描述一下自己的函数。尝试使用排序方法,并将键指定为列表中每个元素的第一个条目 import unicodedata def strip_accents(text): print("HIIIIIIII: %s"%text) return ''.join(char f
我想对这个数组进行排序(按第一个元素(文本))。这些文本包含不同的字符,如ı、ç、ö。。。我找到了定位方法,但无法使用它。我还想描述一下自己的函数。尝试使用排序方法,并将键指定为列表中每个元素的第一个条目
import unicodedata
def strip_accents(text):
print("HIIIIIIII: %s"%text)
return ''.join(char for char in
unicodedata.normalize('NFKD', text)
if unicodedata.category(char) != 'Mn')
l=[['ç', 2], ['ç', 10], ['a', 3], ['b', 1], ['d', 7]]
print(sorted(l, key=lambda k: strip_accents(k[0])))
print(l)
# [['a', 3], ['b', 1], ['ç', 2], ['ç', 10], ['d', 7]]
参考资料:
通常像
ç
这样的字符按字母顺序排列在其非重音对应(c
)之后。从这个意义上讲,您使用的编码可能有助于按字母顺序排序,也可能没有帮助
我建议首先定义您的订单关系:
[a
,a
,a
,b
,c
,ç
,…]
实现
你如何准确地定义“字母顺序”?如果给你ộ 例如,它们应该以什么顺序出现?由于字母没有按您想要的“字母顺序”定义,您需要定义自己的排序函数,包括所需的顺序。A B CčD E F GĞH IİJ K L M N OÖP R SŞT UÜV Y ZAre是否有示例代码?这件事我已经做了两天了。我有作业,但我没有时间问题是“我的字母表是a,b,c,ç,d…但如果我使用排序方法,ç将是最后一个字符(ascii)”,只是对代码做了一些修改来解释@cedricdef