在 CSV 文件中转义单引号
Escape single quote in CSV file
我有一个 .csv 文件,如下例所示:
27/04/22;8888888;LBB blablalbla;5 000;5 000;0;0;53707;1;WWW;
27/04/22;8888888;"LBB blablalbla;15 000;15 000;0;0;53707;1;WWW;
27/04/22;8888888;LBB blablalbla;10 000;10 000;0;0;53707;1;WWW;
我无法使用 csv python 模块正确读取它,因为在第二行有一个双引号但没有引号结尾。
结果是csv文件的其余部分存储在相同的dict值中。
我正在使用 csv.DictReader 函数,但我没有找到任何选项来不考虑这个双引号。
在使用此功能之前是否需要重写 .csv 文件?
Do I need to rewrite the .csv file before working with this function?
不用,可以用csv.QUOTE_NONE
如下,让file.csv
内容为
27/04/22;8888888;LBB blablalbla;5 000;5 000;0;0;53707;1;WWW;
27/04/22;8888888;"LBB blablalbla;15 000;15 000;0;0;53707;1;WWW;
27/04/22;8888888;LBB blablalbla;10 000;10 000;0;0;53707;1;WWW;
然后
import csv
with open('file.csv', newline='') as csvfile:
reader = csv.DictReader(csvfile,fieldnames=["A","B","C","D","E","F","G","H","I","J","K"],delimiter=";",quoting=csv.QUOTE_NONE)
for row in reader:
print(row)
给出输出
OrderedDict([('A', '27/04/22'), ('B', '8888888'), ('C', 'LBB blablalbla'), ('D', '5 000'), ('E', '5 000'), ('F', '0'), ('G', '0'), ('H', '53707'), ('I', '1'), ('J', 'WWW'), ('K', '')])
OrderedDict([('A', '27/04/22'), ('B', '8888888'), ('C', '"LBB blablalbla'), ('D', '15 000'), ('E', '15 000'), ('F', '0'), ('G', '0'), ('H', '53707'), ('I', '1'), ('J', 'WWW'), ('K', '')])
OrderedDict([('A', '27/04/22'), ('B', '8888888'), ('C', 'LBB blablalbla'), ('D', '10 000'), ('E', '10 000'), ('F', '0'), ('G', '0'), ('H', '53707'), ('I', '1'), ('J', 'WWW'), ('K', '')])
我有一个 .csv 文件,如下例所示:
27/04/22;8888888;LBB blablalbla;5 000;5 000;0;0;53707;1;WWW;
27/04/22;8888888;"LBB blablalbla;15 000;15 000;0;0;53707;1;WWW;
27/04/22;8888888;LBB blablalbla;10 000;10 000;0;0;53707;1;WWW;
我无法使用 csv python 模块正确读取它,因为在第二行有一个双引号但没有引号结尾。 结果是csv文件的其余部分存储在相同的dict值中。
我正在使用 csv.DictReader 函数,但我没有找到任何选项来不考虑这个双引号。
在使用此功能之前是否需要重写 .csv 文件?
Do I need to rewrite the .csv file before working with this function?
不用,可以用csv.QUOTE_NONE
如下,让file.csv
内容为
27/04/22;8888888;LBB blablalbla;5 000;5 000;0;0;53707;1;WWW;
27/04/22;8888888;"LBB blablalbla;15 000;15 000;0;0;53707;1;WWW;
27/04/22;8888888;LBB blablalbla;10 000;10 000;0;0;53707;1;WWW;
然后
import csv
with open('file.csv', newline='') as csvfile:
reader = csv.DictReader(csvfile,fieldnames=["A","B","C","D","E","F","G","H","I","J","K"],delimiter=";",quoting=csv.QUOTE_NONE)
for row in reader:
print(row)
给出输出
OrderedDict([('A', '27/04/22'), ('B', '8888888'), ('C', 'LBB blablalbla'), ('D', '5 000'), ('E', '5 000'), ('F', '0'), ('G', '0'), ('H', '53707'), ('I', '1'), ('J', 'WWW'), ('K', '')])
OrderedDict([('A', '27/04/22'), ('B', '8888888'), ('C', '"LBB blablalbla'), ('D', '15 000'), ('E', '15 000'), ('F', '0'), ('G', '0'), ('H', '53707'), ('I', '1'), ('J', 'WWW'), ('K', '')])
OrderedDict([('A', '27/04/22'), ('B', '8888888'), ('C', 'LBB blablalbla'), ('D', '10 000'), ('E', '10 000'), ('F', '0'), ('G', '0'), ('H', '53707'), ('I', '1'), ('J', 'WWW'), ('K', '')])