Python:循环访问特定行的文件

时间:2010-10-08 14:01:08

标签: python

我在文件中有以下几行,我想取第三列;在文件中我没有数字列:

  1. 红;蓝色;绿色;白色;橙;
  2. 绿色;白色;橙;
  3. 蓝;绿色;白;
  4. 红;蓝色;绿色;白;
  5. 蓝;绿色;白色;橙;
  6. 绿色;白色;橙;
  7. 白;橙
  8. 绿色;
  9. 我使用此代码行来执行此操作:

    lines = i.split(";")[2]
    

    问题是有些行只有一列或两列,所以它给了'索引超出范围'错误。请告诉我如何解决这个问题?

    非常感谢 埃迪雅

4 个答案:

答案 0 :(得分:2)

这样的事情:

cols = i.split(";")
if (len(cols) >= 3):
    lines = cols[2]
else:
    #whatever you want here

答案 1 :(得分:2)

简单的解决方案是检查列数并忽略少于三列的行。

third_columns = []
with open("...") as infile:
    for line in infile:
        columns = line.split(';')
        if len(columns) >= 3:
            third_columns.append(columns[2])

如果你解析CSV(看起来像你),你最好使用众多现有的CSV解析器中的一个,e.g. the one in the standard library

答案 2 :(得分:1)

使用切片而不是索引。

>>> with open('test.txt') as f_in:
...     column3 = (line.split(';')[2:3] for line in f_in)
...     column3 = [item[0] for item in column3 if item]
... 
>>> column3
[' Green', ' Orange', ' White', ' Green', ' White', ' Orange']

答案 3 :(得分:0)

for line in open("file"):
    try:
        s=line.split(";")[2]
    except: pass
    else:
        print s