如何在python中组合日语和拉丁语的字符串排序列表

问题描述 投票:1回答:1

我在python中排序时遇到问题。有谁能够帮助我!请。非常感谢!我想按照Excel中的排序方式进行排序列出原文:

table = [
    u"女言葉の消失",  # 2
    u"キセキ",  # 3
    u"ふしぎなくすり",  # 4
    u"カキクケコ",  # 5
    u"嘘憑きとサルヴァドール",  # 1
    u"愛と勇気の三度笠ポン太",  # 0
    u"きせき",
    "漢字",
    "a",
    "A",
    "b",
    "1",
    "B"
]

Python中的结果排序

sorted(table)
['1', 'A', 'B', 'a', 'b', 'きせき', 'ふしぎなくすり', 'キセキ', '嘘憑きとサルヴァドール', '女言葉の消失', '愛と勇気の三度笠ポン太', '漢字', 'カキクケコ']

在excel中排序:

1,
a,
A,
B
b",
カキクケコ", 
きせき",
キセキ", 
ふしぎなくすり", 
嘘憑きとサルヴァドール",  
女言葉の消失", 
愛と勇気の三度笠ポン太",
漢字"
python excel sorting collation cjk
1个回答
0
投票

Python会根据字符的顺序unicode值(它们在unicode中出现的顺序)对字符进行排序,在大多数情况下(日语日语的汉字除外),该命令可以正常工作。我不懂日语,但样本集中的符号可能看起来是汉字,而不是平假名或片假名。

>>> table = [
...     u"女言葉の消失",  # 2
...     u"キセキ",  # 3
...     u"ふしぎなくすり",  # 4
...     u"カキクケコ",  # 5
...     u"嘘憑きとサルヴァドール",  # 1
...     u"愛と勇気の三度笠ポン太",  # 0
...     u"きせき",
...     "漢字",
...     "a",
...     "A",
...     "b",
...     "1",
...     "B"
... ]
>>> for t in sorted(table):
...     print([ord(c) for c in t])
... 
[49]
[65]
[66]
[97]
[98]
[12365, 12379, 12365]
[12405, 12375, 12366, 12394, 12367, 12377, 12426]
[12461, 12475, 12461]
[22040, 24977, 12365, 12392, 12469, 12523, 12532, 12449, 12489, 12540, 12523]
[22899, 35328, 33865, 12398, 28040, 22833]
[24859, 12392, 21191, 27671, 12398, 19977, 24230, 31520, 12509, 12531, 22826]
[28450, 23383]
[65398, 65399, 65400, 65401, 65402]

这里有一篇有趣的文章,解释了正确排序here的困难。

© www.soinside.com 2019 - 2024. All rights reserved.