我正在尝试解析用 "'
引用的 csv。
所以基本上文件看起来像这样:
"'test1'","'test2'","'test3'","'test4'"
"'value1'","'value2'",,"'value4'"
我尝试解析它如下:
import csv
from pprint import pprint
inputCsv = "test.csv"
with open(inputCsv, 'r', newline='') as csvfile:
dictReader = csv.DictReader(csvfile, quotechar='"', delimiter=',',
quoting=csv.QUOTE_ALL, doublequote=True)
for line in dictReader:
pprint(line)
# print(line["'test1'"]) # works, but only with "'test1'", not "test1" or 'test1'; also result is 'value1' not value1
我希望 key 是 test1
- 这样我就可以使用 line["test1"]
访问它(而不是 line["'test1'"]
) 并且值为 value1
,没有额外的引号。
如果不遍历整个字典并在解析后删除每个元素的引号,这是否可能?
最佳答案
您可以定义自己的阅读器以在 迭代期间解决问题(警告:未经测试的代码,但它至少应该让您入门):
class MyReader(csv.reader):
def __next__(self):
row = super().__next__()
return [value.strip("'") for value in row]
class MyDictReader(csv.DictReader):
def __init__(self, f, fieldnames=None, restkey=None, restval=None,
dialect="excel", *args, **kwds):
super().__init__(f, fieldnames, restkey, restval, dialect, *args, *kwds)
self.reader = MyReader(f, dialect, *args, **kwds)
关于python - 如何在 Python 中解析双引号的 csv 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56425240/