Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用带引号的字符串解析csv-高级案例_Python_Python 3.x_Csv - Fatal编程技术网

Python 如何使用带引号的字符串解析csv-高级案例

Python 如何使用带引号的字符串解析csv-高级案例,python,python-3.x,csv,Python,Python 3.x,Csv,我试图让csv模块解析包含带引号的字符串和带引号的分隔符的行。不幸的是,我无法使用任何方言/格式参数实现期望的结果。有什么方法可以解析这个: '"AAA", BBB, "CCC, CCC"' 得到这个: ['"AAA"', 'BBB', '"CCC, CCC"'] # 3 elements, one quoted separator ? 两个基本要求: 必须保留引文 引号分隔符和非转义分隔符必须作为常规字符复制 有可能吗?有两个问题需要解决: 逗号分隔符周围的空格:skipiniti

我试图让csv模块解析包含带引号的字符串和带引号的分隔符的行。不幸的是,我无法使用任何方言/格式参数实现期望的结果。有什么方法可以解析这个:

'"AAA", BBB, "CCC, CCC"'
得到这个:

['"AAA"', 'BBB', '"CCC, CCC"']    # 3 elements, one quoted separator
?

两个基本要求:

  • 必须保留引文
  • 引号分隔符和非转义分隔符必须作为常规字符复制

  • 有可能吗?

    有两个问题需要解决:

    • 逗号分隔符周围的空格:
      skipinitialspace=True
      执行此操作(另请参见)
    • 阅读时保留引号:用三倍引号替换引号可以保留引号
    第二部分在文件中描述为:

    双引号

    控制如何引用字段中出现的quotechar实例如果为True,则字符加倍。如果为False,则转义符用作引号的前缀默认为True。

    独立示例,不带文件:

    import csv
    data = ['"AAA", BBB, "CCC, CCC"'.replace('"','"""')]
    
    cr = csv.reader(data,skipinitialspace=True)
    row = next(cr)
    print(row)
    
    结果:

    ['"AAA"', 'BBB', '"CCC, CCC"']
    
    以文件作为输入:

    import csv
    with open("input.csv") as f:
      cr = csv.reader((l.replace('"','"""' for l in f),skipinitialspace=True)
      for row in cr:
         print(row)
    
    你试过这个吗

    import csv
    with open('file.csv') as csvfile:
        reader = csv.reader(csvfile, delimiter=',', quotechar='"')
        for row in reader:
            print row