python - 使用 sorted() 函数对带重音的列表进行排序
问题描述
我正在尝试使用 sorted() 函数对字符串列表进行排序。问题是我使用的是(法语)口音。我努力了:
import locale
import functools
locale.setlocale(locale.LC_ALL, 'fr_FR')
test=('pêche','pomme')
sortedtest=sorted(test,key=functools.cmp_to_key(locale.strcoll))
但它不起作用(返回 'pomme, pêche' 而不是 'pêche, pomme')。有人可以帮我吗?
解决方案
我已经为您进行了一些测试。我的意思是作为评论,但它不适合评论,所以我必须将其作为答案发送。
In [1]: import locale
...: import functools
...:
...: locale.setlocale(locale.LC_ALL, 'fr_FR')
...: test=('pêche','pomme')
...: sorted(test,key=functools.cmp_to_key(locale.strcoll))
Out[1]: ['pêche', 'pomme']
In [2]: import locale
...: import functools
...:
...: locale.setlocale(locale.LC_ALL, 'fr_FR.utf8')
...: test=('pêche','pomme')
...: sorted(test,key=functools.cmp_to_key(locale.strcoll))
Out[2]: ['pêche', 'pomme']
In [3]: import locale
...: import functools
...:
...: locale.setlocale(locale.LC_ALL, 'fr_FR.ISO-8859-1')
...: test=('pêche','pomme')
...: sorted(test,key=functools.cmp_to_key(locale.strcoll))
Out[3]: ['pêche', 'pomme']
In [4]: import locale
...: import functools
...:
...: locale.setlocale(locale.LC_ALL, 'en_GB.ISO-8859-1')
...: test=('pêche','pomme')
...: sorted(test,key=functools.cmp_to_key(locale.strcoll))
Out[4]: ['pêche', 'pomme']
到目前为止,我无法通过返回 'pomme, pêche' 而不是 'pêche, pomme' 得到结果。我总是按照你想要的顺序得到它。
推荐阅读
- python - 自动完成最后输入的单词
- google-cloud-dataproc - 是否可以使用 Google Dataproc 上的初始化脚本向集群提交作业?
- python - 集成测试断言最佳实践
- python - 我在添加指标和保存模型时遇到了麻烦
- c++ - MPI_Get 由于不同的循环长度而在循环中挂起
- f# - 如何在 F# 中将对象序列化为 Json,不包括默认值和保留枚举名称
- wordpress - Wordpress 按不同的自定义帖子类型的元键值对自定义帖子类型的管理列进行排序
- javascript - 如何在nodejs中遍历MySQL查询的结果
- visual-studio-code - 如何在 VS Code 中更改默认终端
- node.js - 从表 mongodb 中获取所有记录 - 模型“User”的路径“_id”处的值“allcity”转换为 ObjectId 失败