在 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', '')])