python:循环遍历特定行的文件

Python: loop through a file for specific lines

在一个文件中,我想取第三列;在该文件中,我没有数字列:

  • 红色;蓝色;绿色;白色;橙色;
  • 绿色;白色;橙色;
  • 蓝色;绿色;白色;
  • 红色;蓝色;绿色;白色;
  • 蓝色;绿色;白色;橙色;
  • 橙色
  • 绿色;白色;橙色;
  • 白色的;橙色的
  • 绿色;
  • 我用这条代码行来做这件事:

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

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

    谢谢阿迪亚


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

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

    如果您解析csv(似乎是这样做的),您最好使用现有的众多csv解析器之一,例如标准库中的一个。


    像这样的东西怎么样:

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


    使用切片而不是索引。

    1
    2
    3
    4
    5
    6
    >>> 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']


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