<分区>
我尝试运行来自 Does Python have a built in function for string natural sort? 的已接受答案,但它给了我以下错误:
File " < stdin >", line 4
convert = lambda text: int(text) if text.isdigit() else text
SyntaxError: invalid syntax
有人可以帮忙吗?
谢谢...
更新:
谢谢大家的回复。
我首先将代码集成到我自己的脚本中,但收到错误。然后我只是在 Python 交互窗口(只有这一行)上测试了这个 def,它给出了同样的错误。
我正在使用 python/2.6.5。奇怪的是这段代码在我的另一台计算机(Python 2.6.1)上运行。此代码是否特定于版本?
下面的代码适用于 2.6.x
import re
li = ['elm1', 'elm0', 'Elm18', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']
def natural_sort(l):
convert = lambda text: int(text) if text.isdigit() else text.lower()
alphanum_key = lambda key: [ convert(c) for c in re.split('([0-9]+)', key) ]
return sorted(l, key = alphanum_key)
print natural_sort(li)
再试一次,复制粘贴。