1

我有一个文件,其中包含一个制表符分隔的标题和行,如下所示:

ID  Field1
test1   "A","B"

这是我的解析脚本。

with open(dataFile) as tsv:
    for line in csv.reader(tsv, delimiter='\t'):
        print(line)

和输出:

['ID', 'Field1']
['test1', 'A,"B"']

我不知道为什么它会在第二个字段的第一个引用项上去掉双引号。我为 csv 阅读器尝试了不同的方言和设置,但没有成功。

4

3 回答 3

2

csv 阅读器的默认引号字符是双引号,因此它会自动删除它们。将其更改为“|” 将解决您的问题。你可以这样做:

with open(dataFile) as tsv:
    for line in csv.reader(tsv, delimiter='\t', quotechar='|'):
        print(line)

来自https://docs.python.org/3/library/csv.html#csv.Dialect.quotechar

方言.quotechar

用于引用包含特殊字符(例如分隔符或引号字符)或包含换行符的字段的单字符字符串。它默认为'"'。

编辑:

您也可以使用quoting=csv.QUOTE_NONE选项来禁用引用。

于 2020-05-15T16:21:50.507 回答
1

您只需要通过以下选项告诉csv.reader忽略引用:csv.QUOTE_NONE

with open(dataFile) as tsv:
    for line in csv.reader(tsv, delimiter='\t', quoting=csv.QUOTE_NONE):
        print(line)

输出:

['ID', 'Field1']
['test1', '"A","B"']
于 2020-05-15T16:20:28.057 回答
0

看来您是在分隔一个制表符,而不是在逗号上实际拆分,我会更改您的代码以反映这一点。

于 2020-05-15T16:04:56.733 回答