簡體   English   中英

帶分號的csv文件不會被視為列表> IndexError:列表索引超出范圍

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM