Python 带有分号的csv文件不被视为列表>;索引器:列表索引超出范围
Python新手,但发现使用它非常有趣!我写的剧本有点麻烦 脚本的作用: 它读取一个csv文件,在其中的所有行上循环,并将信息放在列表(a、b、c、d和e)中每行的第二个位置[1]。然后连接一个字符串(在另一个应用程序中用作查询) csv文件的结构:Python 带有分号的csv文件不被视为列表>;索引器:列表索引超出范围,python,Python,Python新手,但发现使用它非常有趣!我写的剧本有点麻烦 脚本的作用: 它读取一个csv文件,在其中的所有行上循环,并将信息放在列表(a、b、c、d和e)中每行的第二个位置[1]。然后连接一个字符串(在另一个应用程序中用作查询) csv文件的结构: Leg1,a,TST Leg2,b,TST Leg3,c,TST Leg4,d,TST Leg5,e,TST 问题: 当我使用以逗号作为分隔符的csv文件时,它可以正常工作。当我使用带有分号的csv文件作为分隔符时,会导致一个错误:indexer
Leg1,a,TST
Leg2,b,TST
Leg3,c,TST
Leg4,d,TST
Leg5,e,TST
问题:
当我使用以逗号作为分隔符的csv文件时,它可以正常工作。当我使用带有分号的csv文件作为分隔符时,会导致一个错误:indexer错误:列表索引超出范围。以分号分隔的文件中的行似乎不被视为由多个列表项组成
代码:
#!/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=';')
要处理带引号的字段,您需要查看字段的值
事实上,您还可以使用该类推断文件属性。当您不知道分隔符时,这很有用。同样,直接从文档中:
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 ...
在处理之前,一个简单的f.readline().replace(“;”,“,”)不是可以完成任务吗?假设数据在任何情况下都不包含分号。如果没有,请在没有解决方案尝试的情况下提供代码版本,因为它会分散您的注意力。谢谢您的反应!但是,这会起作用,我不能确保它将接收的所有csv文件都用分号或逗号分隔。您的建议只适用于这两种情况中的一种。只要实际数据中没有逗号或分号,这两种情况都适用。文件可能包含哪些分隔符?好的,我将在原始文章中编辑代码,使其具有基本功能。它适用于逗号分隔的csv文件,但不适用于分号分隔的csv文件。这会帮助你做你想做的事。
csv.Sniffer()。