CSV Reader 从第一个字段中删除双引号
CSV Reader Removing Double Quotes from First Field
我有一个文件,其中包含制表符分隔 header 和如下行:
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 reader 尝试了不同的方言和设置但没有成功。
看来您是在分隔制表符而不是在逗号上分隔,我会更改您的代码以反映这一点。
您只需通过 csv.QUOTE_NONE
选项告诉 csv.reader
忽略引号:
with open(dataFile) as tsv:
for line in csv.reader(tsv, delimiter='\t', quoting=csv.QUOTE_NONE):
print(line)
输出:
['ID', 'Field1']
['test1', '"A","B"']
csv reader 的默认引号字符是双引号,因此它会自动删除它们。将其更改为类似“|”的内容会解决你的问题。你可以这样做:
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:
Dialect.quotechar
一个单字符字符串,用于引用包含特殊字符(例如定界符或引号字符)或包含换行符的字段。它默认为 '"'。
编辑:
您也可以使用 quoting=csv.QUOTE_NONE
选项来禁用引用。
我有一个文件,其中包含制表符分隔 header 和如下行:
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 reader 尝试了不同的方言和设置但没有成功。
看来您是在分隔制表符而不是在逗号上分隔,我会更改您的代码以反映这一点。
您只需通过 csv.QUOTE_NONE
选项告诉 csv.reader
忽略引号:
with open(dataFile) as tsv:
for line in csv.reader(tsv, delimiter='\t', quoting=csv.QUOTE_NONE):
print(line)
输出:
['ID', 'Field1']
['test1', '"A","B"']
csv reader 的默认引号字符是双引号,因此它会自动删除它们。将其更改为类似“|”的内容会解决你的问题。你可以这样做:
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:
Dialect.quotechar
一个单字符字符串,用于引用包含特殊字符(例如定界符或引号字符)或包含换行符的字段。它默认为 '"'。
编辑:
您也可以使用 quoting=csv.QUOTE_NONE
选项来禁用引用。