我目前对quotechar 参数的理解是它围绕着由逗号分隔的字段。我正在阅读 python 的 csv 文档,并编写了与他们类似的代码:
import csv
with open("test.csv", newline="") as file:
reader = csv.reader(file, delimiter=",", quotechar="|")
for row in reader:
print(row)
我的 csv 文件包含以下内容:
|Hello|,|My|,|name|,|is|,|John|
输出给出了预期的字符串列表:
['Hello', 'My', 'name', 'is', 'John']
当我的 csv 文件中的逗号之间有空格时,就会出现问题。
例如,如果我在结束后有一个空格 |像这样的领域:
|Hello| ,|My| ,|name| ,|is| ,|John|
它提供与以前相同的输出,但现在列表中的字符串中包含一个空格:
['Hello ', 'My ', 'name ', 'is ', 'John']
我的理解是,quotechar 参数只会考虑 | 之间的内容。象征。
任何帮助是极大的赞赏!
最佳答案
quotechar
论点是
A one-character string used to quote fields containing special characters, such as the delimiter or quotechar, or which contain new-line characters. It defaults to '"'.
例如,
如果您的
csv
文件包含表单的数据|Hello|,|My|,|name|,|is|,|"John"|
|Hello|,|My|,|name|,|is|,|"Tom"|
那么在这种情况下你不能使用默认的
quotechar
这是 "
因为它已经存在于 csv 数据的实体中,所以要指示您想要的 csv 阅读器 "John"
要包含在输出中,您将指定其他一些 quotechar
,可能是 |
或 ;
或任何字符取决于要求。输出现在包括
John
和 Tom
在引号中,['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
考虑另一个例子 其中 csv 字段本身包含
delimiter
,考虑 csv
文件包含"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
现在在这种情况下,您必须指定
quotechar
明确指示 csv 阅读器,以便它可以区分 csv 字段中的实际分隔符(控制字符)和逗号(文字字符)。现在在这种情况下 quotechar
"
也会起作用。现在来到你的代码,你必须替换
delimiter
之前的额外空格。在 csv
带有空字符串的文件。您可以通过以下方式执行此操作:试试这个:
from io import StringIO
with open("test.csv", newline="") as f:
file = StringIO(f.read().replace(" ,", ","))
reader = csv.reader(file, delimiter=",", quotechar="|")
for row in reader:
print(row)
这输出,
['Hello', 'My', 'name', 'is', 'John']
关于python - csv reader 函数的quotechar 参数是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60902650/