Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 带有分号的csv文件不被视为列表>;索引器:列表索引超出范围_Python - Fatal编程技术网

Python 带有分号的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

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错误:列表索引超出范围。以分号分隔的文件中的行似乎不被视为由多个列表项组成

代码:

#!/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()。