2016-04-03 36 views
-1

我想要做的是让我的Python代码读取.txt文件与“;”在每一行上分开值,然后将每行上的每个值分隔到一个列表中,最后将这些值附加到分配的列表中。Python3.5.1:从列表中追加列表不起作用

这里就是我已经试过......

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 

有关这个问题可能在这里的任何想法......?

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

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

显然不是所有的数据是足够长 – jonrsharpe

+0

对不起,您所使用的其他一些文件有可能在末尾额外的换行符。 –

+0

你的意思是缺少行内的值,或者.txt文件中的某些“行”没有足够的分隔符?因为我仔细检查了该文件的前50行,并对其进行了测试,并且仍然失败...:/ – GPost

回答

1

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

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

干杯!你是对的,这是一个额外的行,尽管我试图小心..:D但是你的行“如果len(lineArray)> = 2:”完美的工作!非常感谢! – GPost