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 |