【问题标题】:Invalid syntax error of Python 3's str.split in Python 2Python 2 中 Python 3 的 str.split 的无效语法错误
【发布时间】:2020-10-21 16:38:39
【问题描述】:

下面的行在 python3 中对我来说很好。如何为 python 2 修复它。

word, *vector = line.split()

Python 2 中的错误:

word, *vector = line.split()
      ^ SyntaxError: invalid syntax

【问题讨论】:

    标签: python string python-2.7 split


    【解决方案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 并且它不会简化你的代码。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-01
      • 1970-01-01
      • 2016-08-07
      • 2015-05-24
      相关资源
      最近更新 更多