【问题标题】:Don't understand cause of this AttributeError: 'list' object has no attribute 'split'不明白这个 AttributeError 的原因:“list”对象没有属性“split”
【发布时间】:2020-07-07 09:18:45
【问题描述】:

出于个人兴趣,我刚刚开始学习使用 Python 编程,并且正在关注一个在线训练营。我应该解决一些练习,我很快就开始发现最初的困难。所以,我有这个清单:

chaos =["old price: 40", "new price: 21", "old price: 29", "old price: 50", "new price: 101"]

我想在变量 l 中插入“混乱”列表,以便在冒号上拆分它,所以我输入:

l = chaos.split(":")

print(l)

还有,错误信息如下:

AttributeError                            Traceback (most recent call last)
<ipython-input-12-31400247da2e> in <module>
      1 chaos =["old price: 40", "new price: 21", "old price: 29", "old price: 50", "new price: 101"]
      2 
----> 3 l = chaos.split(":")
      4 
      5 print(l)

错误:

AttributeError: 'list' object has no attribute 'split'

我在查看其他示例和教程后编写并重写了它,但我真的不明白我做错了什么。有人可以帮帮我吗?

【问题讨论】:

标签: python


【解决方案1】:

kederrac 的回答是正确的。或者,您可以这样使用列表推导:

l = [value for entry in chaos for value in entry.split(':')]

它给出了输出:

['old price', ' 40', 'new price', ' 21', 'old price', ' 29', 'old price', ' 50', 'new price', ' 101']

查看错误的实际原因,该消息准确地解释了发生了什么。列表对象(在本例中为 chaos)无权访问 split 方法。这是字符串的保留方法

此外,如果您想保留拆分的元素列表,您可以按照 boechat107 的建议将理解简化为以下内容。

l = [entry.split(':') for entry in chaos]

这会导致:

[['old price', ' 40'], ['new price', ' 21'], ['old price', ' 29'], ['old price', ' 50'], ['new price', ' 101']]

【讨论】:

  • 非常感谢你们! :)
【解决方案2】:

您必须从列表chaos 中拆分每个元素,您可以使用for 循环:

l = []

for c in chaos:
    l.extend(c.split(':'))
l

输出:

['old price',
 ' 40',
 'new price',
 ' 21',
 'old price',
 ' 29',
 'old price',
 ' 50',
 'new price',
 ' 101']

你可以阅读更多关于str.splithere

【讨论】:

  • 我建议使用列表推导:print([c.split(':') for c in chaos]).
  • @boechat107 值得注意的是,这将打印列表列表,而不是从拆分中解压缩值
  • @DragosDumitrache,你是完全正确的。在这个问题中,尚不清楚预期的输出是什么。我的意思是建议列表理解
  • 是的,我已将其包含在我的答案中,因此它更全面。谢谢:)
【解决方案3】:

split() 是一个专有的字符串方法。测试命令type(chaos),你会检查出来的。

要解决您的问题,如上面一些答案和 cmets 所述,您需要遍历 chaos 列表的元素。

您可以改用列表压缩[element.split(":") for element in chao]for 循环:

l = []
for element in chaos:
    l.append(element.split(":"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    • 2021-04-05
    • 2017-07-02
    • 2016-01-31
    • 2016-09-19
    • 2020-09-14
    • 2021-07-25
    相关资源
    最近更新 更多