【问题标题】:Python3.5.1: Appending to a list from a list doesn't workPython3.5.1:从列表追加到列表不起作用
【发布时间】:2016-07-23 03:45:49
【问题描述】:

我想要做的是让我的 python 代码读取一个带有“;”的 .txt 文件每行分隔值,然后将每行上的每个值分隔到一个列表中,最后将这些值附加到分配的列表中。

这是我尝试过的......

pullData= open("example.txt", "r", encoding='utf-8').read()
dataArray = pullData.split('\n')
array_one = []
array_two = []

for eachLine in dataArray:
    lineArray = eachLine.split(';')
    array_one.append(lineArray[0])
    array_two.append(lineArray[1])

此示例导致错误:

Traceback (most recent call last):
  File "MyPath.py", line 25, in <module>
    array_two.append(lineArray[1])
IndexError: list index out of range

每行的拆分都可以正常工作,因为打印这些列表可以正常工作;即:

for eachLine in dataArray:
        lineArray = eachLine.split(';')
        print(lineArray[0])
        print(lineArray[1]) 

...因为上面返回了它应该返回的内容。

>>> 
RESTART: MyPath.py 
Jeff
1009

Bill
771

关于这里可能出现什么问题的任何想法...?

附:数据(即“example.txt”)是这样的:

Jeff;1009;3486;24047
Bill;771;371;3867
Michael;931;2131;3331
Jess;3311;9761;3886
Cathy;571;1301;63668

【问题讨论】:

  • 显然并非所有数据都足够长
  • 抱歉,您在那里使用了其他文件,最后可能有一个额外的换行符。
  • 您的意思是在行中缺少值还是 .txt 文件中的某些“行”没有包含足够的内容来分割?因为我仔细检查了文件的前 50 行,并对其进行了测试,但仍然失败...:/
  • 是的,后一个代码的失败方式应该与前一个完全相同;即“每行的拆分工作正常,因为打印这些列表工作正常”不可能是真的。
  • 天哪!!!我不敢相信我是多么愚蠢! :D 我用仔细检查过的 50 个样本进行了“测试”,但没有意识到我的编辑器在底部添加了额外的行,因为我只是将它粘贴到另一个编辑器窗口。所以你有了它,现在它正在工作......谢谢Antti Haapala! :)

标签: list append python-3.5


【解决方案1】:

也许你在文件末尾有一个空的换行符。试试:

for eachLine in dataArray:
    lineArray = eachLine.split(';')
    if len(lineArray) >= 2:
        array_one.append(lineArray[0])
        array_two.append(lineArray[1])

【讨论】:

  • 干杯!你是对的,它是底部的额外行,即使我试图小心.. :D 但是你的行“ if len(lineArray) >= 2:” 工作得很好!非常感谢!
猜你喜欢
  • 2020-09-24
  • 2017-02-06
  • 2021-01-10
  • 2018-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-08
  • 2020-08-08
相关资源
最近更新 更多