我在想要讀取第三列的文件中有以下行;在文件中,我沒有數字列:Python:通過一個文件循環訪問特定行
- 紅色;藍色;綠色;白色;橙子;
- 綠色;白色;橙子;
- 藍色;綠色;白色;
- 紅色;藍色;綠色;白色;
- 藍色;綠色;白色;橙子;
- 橙色
- 綠色;白色;橙子;
- 白色;橙色
- 綠色;
我用這個代碼行做到這一點:
lines = i.split(";")[2]
的問題是,某些行只有一個列或兩個,所以它給了我「索引超出範圍」的錯誤。請告訴我如何解決這個問題?
非常感謝 阿迪亞
我在想要讀取第三列的文件中有以下行;在文件中,我沒有數字列:Python:通過一個文件循環訪問特定行
我用這個代碼行做到這一點:
lines = i.split(";")[2]
的問題是,某些行只有一個列或兩個,所以它給了我「索引超出範圍」的錯誤。請告訴我如何解決這個問題?
非常感謝 阿迪亞
使用片而不是指數。
>>> 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:腦海中有着幾乎相同的想法。 – eldarerathis 2010-10-08 14:10:20
怎麼樣這樣的:
cols = i.split(";")
if (len(cols) >= 3):
lines = cols[2]
else:
#whatever you want here
簡單的解決方案是檢查列數並忽略少於三列的行。
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。
for line in open("file"):
try:
s=line.split(";")[2]
except: pass
else:
print s
裸露的除外是邪惡的 – SilentGhost 2010-10-08 15:01:28
好吧,當沒有足夠的列時想做什麼? – SilentGhost 2010-10-08 14:07:10