Python 2 中 Python 3 的 str.split 的无效语法错误
Posted
技术标签:
【中文标题】Python 2 中 Python 3 的 str.split 的无效语法错误【英文标题】:Invalid syntax error of Python 3's str.split in Python 2 【发布时间】:2020-10-21 16:38:39 【问题描述】:下面的行在 python3 中对我来说很好。如何为 python 2 修复它。
word, *vector = line.split()
Python 2 中的错误:
word, *vector = line.split() ^ SyntaxError: invalid syntax
【问题讨论】:
【参考方案1】:为什么不:
arr = line.split()
word = arr[0]
vector = arr[1:]
?
【讨论】:
【参考方案2】:这样做不会污染命名空间...
word, vector = (lambda x,*y:(x, y))(*line.split())
但是我不认为很多 Python 程序员会喜欢它
【讨论】:
看起来不必要的复杂而且有点矫枉过正。 @JamesShapiro:不幸的是,除了函数体之外,Python 不提供本地范围,并且与嵌套相比,有些大脑的名称更成问题(我知道,因为我就是其中之一)。在我的解决方案中,没有涉及额外的名称(除了短暂的x
和y
,您可以在阅读后立即忘记它们)。在您的解决方案中有 arr
... 之前使用过并被覆盖了吗?以后会用吗?如果不分析整个函数体,我真的无法知道你的代码到底做了什么。
另一种选择是写 line.split() 两次。【参考方案3】:
我找到了另一个解决方案:
import re
word, vector = re.split('', line)[0], re.split('', line)[1:]
【讨论】:
word, vector = line.split()[0], line.split()[1:] 也应该可以。如果你不需要它,最好避免导入 re 并且它不会简化你的代码。以上是关于Python 2 中 Python 3 的 str.split 的无效语法错误的主要内容,如果未能解决你的问题,请参考以下文章