繁体   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