python - csv reader 函数的quotechar 参数是如何工作的?

标签 python csv

我目前对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 ,可能是 |;或任何字符取决于要求。

输出现在包括 JohnTom在引号中,
['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/

相关文章:

Mac OSX 中的 Python ctags 子进程调用

php - 使用php将csv文件导入数据库

java - 如何在jmeter中捕获响应数据并进行参数化

python - 如何创建一个字符串矩阵作为行列并在 python 中存储 CSV 中的计数?

javascript - 从多维数组创建逗号分隔的字符串

python - 使用Python解析Json文件时出现关键错误

python - 为什么我的 RSA 代码中的加密/解密不起作用?

python - 用不同的色调分组覆盖对 seaborn 的 FacetGrid 的多次调用

python - 调试 Python 质数程序

iphone - 在 ios6 中解析 csv