Python 排序如何做到与 Windows 一致?

2015-10-12 16:22:03 +08:00
 kknd22
由于特殊需求,要让 Python 排序完全符合 windows 按名称排序的规则排序文件名,这样应该如何做到?
比如几个文件名排序后, python 会把 "win_1.txt" 放到"_win1.txt"前边,而 windows 则会相反,特殊符号在前。
2968 次点击
所在节点    Python
9 条回复
codeforlife
2015-10-12 16:35:56 +08:00
列表排序么
kknd22
2015-10-12 16:47:46 +08:00
@codeforlife 是的,列表排序
codeforlife
2015-10-12 16:54:04 +08:00
@kknd22
你可以通过比较函数,先定义比较函数:

def compare(x, y):
x - y

然后排序 :
list.sort(cmp = compare)
tobyxdd
2015-10-12 17:11:33 +08:00
windows 排序大体规则还是按字母的。。特殊的既然规则也已经知道了就自己微调?
staticor
2015-10-12 17:18:09 +08:00
map 字符串每个字符 -> ascii 值 (或自定义); 再据此排序
Strikeactor
2015-10-12 17:22:06 +08:00
自己写呗。。你还希望 Pyhton 专门做个函数去兼容 Windows 的排序么
tulongtou
2015-10-12 17:26:39 +08:00
<img src="//cdn.v2ex.co/avatar/8091/58b6/131707_normal.png?m=1439002137" class="avatar" border="0" align="default">
guoyijun163
2015-10-13 11:59:58 +08:00
Shlwapi = windll.LoadLibrary("Shlwapi")
@WINFUNCTYPE(c_int, LPCWSTR, LPCWSTR)
def compare_string(first_str, second_str):
return Shlwapi.StrCmpLogicalW(first_str, second_str)

调用一个 WIN32 API
kknd22
2015-10-14 13:20:04 +08:00
@guoyijun163
用这个方法搞定了
另外谢谢所有朋友
@codeforlife @tobyxdd @staticor @Strikeactor @tulongtou @guoyijun163

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/227412

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX