Python 语法错误 : invalid syntax when using if in one line

标签 python

<分区>

我尝试运行来自 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)

再试一次,复制粘贴。

关于Python 语法错误 : invalid syntax when using if in one line,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14552483/

相关文章:

python - 解释一下python中这些尖括号和斜杠的使用

python - 如何让 Python 说话

python - 我们可以为 Python 初学者学习 Django 吗?

python - 如何防止未声明的变量和方法的 AttributeError 并多次修复 __getattr__ 方法调用?

python - 如何使我的 python 脚本易于移植?或者如何将所有模块依赖项编译成二进制文件?

百分位数方法的 Python numpy 升级失败测试

python - 如何从 datetime.datetime 对象和纳秒值创建 pandas.Timestamp

python - 无法弄清楚为什么代码在 Python 3 中工作,而不是 2.7

python - Django + Scrapy 多爬虫架构

python - Django heroku 上传文件