【问题标题】:How to remove double quotes(") in csv file with Python?如何使用 Python 删除 csv 文件中的双引号(“)?
【发布时间】:2019-01-28 17:06:50
【问题描述】:

我在 csv 文件中的输入如下:

   “No”    “ename” age  “gender”   “salary”
    1   “aaa”   23     f          1000
    2   “bbb”   24     m          2000
    3   “ccc”   25    “f”         3000
    4   “ddd”   35     m          4000
    5   “eee”   27     f          5000

以下代码用于删除 .csv 文件中给出的引号。

import csv

csv.register_dialect('myDialect', delimiter=',', doublequote=False,
                     quoting=csv.QUOTE_NONE, skipinitialspace='True')

f = open("pythonFiles/normal.csv", 'r')

normal = csv.reader(f, dialect='myDialect')

for data in normal:
    print(data, len(data))

输出如下所示。我想删除所有引号。

['“No”', '“ename”', 'age', '“gender”', '“salary”'] 
['1', '“aaa”', '23', 'f', '1000'] 
['2', '“bbb”', '24', 'm', '2000'] 
['3', '“ccc”', '25', '“f”', '3000'] 
['4', '“ddd”', '35', 'm', '4000'] 
['5', '“eee”', '27', 'f', '5000'] 

【问题讨论】:

  • 您没有在代码中写入文件?您是否将print 重定向到文件?
  • 也许quoting=csv.QUOTE_NONE 不是正确的选择。
  • 看来您的方言使用了 空格分隔符 并且引号不是 NONE 而是花哨的引号。
  • 我认为我们的出发点是错误的。该 csv 文件不是包含逗号分隔值的文件。
  • @JoshuaSchlichting 我同意。如果设置了delimiter=',',我很惊讶输出是这样的。我希望只有一列,因为空格实际上用作输入中的分隔符。

标签: python python-3.x csv opencsv


【解决方案1】:

也许你可以使用replace(...)

for data in normal:
    data = [d.replace('“', '').replace('”', '') for d in data]
    print(data, len(data))

如果您想保持内部引号不变,您也可以使用lstrip(...)rstrip(...)

for data in normal:
    data = [d.lstrip('“').rstrip('”') for d in data]
    print(data, len(data))

请注意,您使用的引号是“左双引号”()和“右双引号”(),而不仅仅是简单的“双引号”(")。

【讨论】:

    【解决方案2】:

    从上面 André 的回答中获得灵感,我在下面修改了您的代码

    import csv
    
        csv.register_dialect('myDialect', delimiter=' ', doublequote=True,
                             quoting=csv.QUOTE_NONE, skipinitialspace='True')
    
        f = open("normal.csv", 'r')
        f = f.read().replace('“', '').replace('”', '').splitlines()
        normal = csv.reader(f, dialect='myDialect')
    
        for data in normal:
            print(data, len(data))
    

    如果您对此感到满意,请选择 André 的答案作为已接受的答案。 干杯。

    【讨论】:

      猜你喜欢
      • 2022-01-20
      • 2018-07-27
      • 2014-05-05
      • 1970-01-01
      • 2014-05-29
      • 2021-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多