【问题标题】:TypeError: split() takes no keyword arguments in Python 2.xTypeError: split() 在 Python 2.x 中不接受关键字参数
【发布时间】:2015-02-14 02:51:33
【问题描述】:

我正在尝试将文档的一部分分成不同的组件,这些组件由 & 号分隔。这就是我所拥有的:

name,function,range,w,h,k,frac,constraint = str.split(str="&", num=8)

错误:

TypeError: split() takes no keyword arguments

有人可以向我解释这个错误并为我提供另一种方法来完成这项工作吗?

【问题讨论】:

    标签: python string python-2.7 split


    【解决方案1】:

    str.split的参数分别称为sepmaxsplit

    str.split(sep="&", maxsplit=8)
    

    但是你只能在 Python 3.x 中使用像这样的参数名称。在 Python 2.x 中,您需要这样做:

    str.split("&", 8)
    

    我认为这对两个版本都是最好的,因为使用名称实际上是多余的。 str.split 是 Python 中一个非常知名的工具,所以我怀疑任何 Python 程序员都无法理解该方法的参数的含义。

    此外,您应该避免使用户定义的名称与内置名称之一相同。这样做会使内置函数黯然失色,并使其在当前范围内无法使用。所以,除了str,我会为你的字符串选择一个不同的名字。

    【讨论】:

    • 不仅没有理由指定名称,即使您使用文档使用的名称,sepmaxsplit。因此,请注意错误提示“no 关键字参数”。
    • 嗯。它适用于 3.x,所以我认为它也适用于 2.x。已更新。
    • 消除新用户关于不使用名称str 的困惑也特别重要,因为str.split 确实 作为一种未绑定的方法存在。我希望 OP 已被告知“哦,您应该使用 str.split()”,这 是正确的,但可能会被错误地理解....
    • 这不适用于 Python 3.2。事实证明,它在 Python 3.2 和 3.3 之间发生了变化。在 3.2 中它们是 positional arguments,但在 3.3 中它们更改为 keyword arguments
    【解决方案2】:

    错误表明您无法向split 提供命名参数。您必须仅使用参数调用 split - 不使用参数名称:

    name,function,range,w,h,k,frac,constraint = str.split("&", 8)
    

    【讨论】:

      【解决方案3】:

      split 没有得到关键字参数strnum。改为这样做:

      name,function,range,w,h,k,frac,constraint  = str.split('&', 8)
      

      【讨论】:

        猜你喜欢
        • 2020-05-17
        • 1970-01-01
        • 2017-02-03
        • 2018-07-24
        • 2021-10-10
        • 2015-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多