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 不提供本地范围,并且与嵌套相比,有些大脑的名称更成问题(我知道,因为我就是其中之一)。在我的解决方案中,没有涉及额外的名称(除了短暂的xy,您可以在阅读后立即忘记它们)。在您的解决方案中有 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 的无效语法错误的主要内容,如果未能解决你的问题,请参考以下文章

Python学习3--字符串

TypeError:需要一个类似字节的对象,而不是'str'-python 2到3 [重复]

Python list 和 str 互转

python中怎么把string转换成int

python 字符串提取信息方法总结

python中删除某个元素的3种方法