我在文件中有以下几行,我想取第三列;在文件中我没有数字列:
我使用此代码行来执行此操作:
lines = i.split(";")[2]
问题是有些行只有一列或两列,所以它给了'索引超出范围'错误。请告诉我如何解决这个问题?
非常感谢 埃迪雅
答案 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