【问题标题】:How to skip comma while reading CSV file in python?在 python 中读取 CSV 文件时如何跳过逗号?
【发布时间】:2019-05-11 08:39:02
【问题描述】:

我正在使用阅读器方法阅读一列 csv 文件。我的一列包含带有逗号的字符串值。但是当我使用分隔符作为逗号时,读者会将其视为两个不同的值。

我的要求是,代码应该仅将此列值作为单个字符串读取,并且读取器方法应仅使用分隔符作为逗号。

输入: "11"11","Bob Marley, USA","ABC"

代码

reader = csv.reader(csv_file, delimiter=',', quotechar="'")
output = []
for row in reader:
    output = list(row)
    for each in output:
        print(each) 

输出

"11"11"
"Bob Marley
 USA"
"ABC"

期望的输出: “1111”“鲍勃·马利美国”“ABC”

【问题讨论】:

    标签: python list csv delimiter reader


    【解决方案1】:

    您的quotechar="'" 应该是quotechar='"',因为输入使用" 作为字符串值。

    编辑 1:

    您不能在单元格内使用控制字符而不对其进行转义,因此您的输入需要对单元格内的每个" 进行转义。不然会坏的。

    以下代码适用于"11\"11","Bob Marley, USA","ABC",但不适用于"11"11","Bob Marley, USA","ABC"

    reader = csv.reader(csv_file, delimiter=',', escapechar='\\', quotechar='"')
    for row in reader:
        for cell in row:
            print cell
    

    您也许可以将" 替换为\"regular expression

    【讨论】:

    • 好的。但是如果我们在字符串值中也得到双引号,那么它就不再起作用了。这是 csv 文件中的一个错误,我必须编写代码来处理它。
    • 在这种情况下,您需要使用反斜杠转义这些引号并将escapechar='\\' 添加到读者的选项中。见here
    • 我更新了我的答案。 CSV 阅读器将无法按照您希望的方式处理您当前的输入。您必须事先以另一种方式清理输入。
    猜你喜欢
    • 1970-01-01
    • 2022-06-13
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    相关资源
    最近更新 更多