[英]csv file with semicolons is not treated as list > IndexError: list index out of range
Python新手,但發現它非常有趣! 我寫這個劇本時遇到了一些問題。
腳本的作用:它讀取一個csv文件,遍歷其中的所有行,並將信息放在列表中每行的第二個位置[1](a,b,c,d和e)。 然后它連接一個字符串(在另一個應用程序中用作查詢)
csv文件的結構:
Leg1,a,TST
Leg2,b,TST
Leg3,c,TST
Leg4,d,TST
Leg5,e,TST
問題:當我使用逗號作為分隔符的csv文件時,它工作正常。 當我使用帶分號的csv文件作為分隔符時,會導致錯誤:IndexError:list index超出范圍。 看起來好像分號分隔文件中的行不會被視為由多個列表項組成
代碼:
#!/usr/bin/python
import csv
f = open('servers.csv')
starttext = '(b.bl = "f") & ('
query = []
q = 0
csv_f = csv.reader(f)
for row in csv_f:
query.append('(b.c.n=\"' + row[1] + '\")')
q += 1
serverlist = ' | '.join(query)
print starttext + serverlist + ')'
f.close()
我希望有人能指出我正確的方向?!
提前致謝!
csv.reader
函數接受分隔符參數,有關詳細信息,請參閱文檔 。
rdr = csv.reader(csvfile, delimiter=';')
要處理帶引號的字段,您需要查看quoting
參數的值。
實際上,您還可以使用csv.Sniffer
類推斷文件屬性。 當您不知道分隔符時,這很有用。 再次,直接來自文檔:
with open('example.csv') as csvfile:
dialect = csv.Sniffer().sniff(csvfile.read(1024))
csvfile.seek(0)
reader = csv.reader(csvfile, dialect)
# ... process CSV file contents here ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.