Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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中的3个字符分隔符字符串?_Python_Python 3.x - Fatal编程技术网

Python 如何将“,”指定为.csv中的3个字符分隔符字符串?

Python 如何将“,”指定为.csv中的3个字符分隔符字符串?,python,python-3.x,Python,Python 3.x,如何指定何时读取文件并在输出中指定此3个字符的字符串作为.csv分隔符?例如:col1,col2,col3,col4 需要用于读取和输出的代码: import csv with open('a.csv', 'r') as infile, open('reordered.csv', 'a') as outfile: fieldnames = ['B', 'C', 'A', 'D'] writer = csv.DictWriter(outfile, delimiter=',', fi

如何指定何时读取文件并在输出中指定此3个字符的字符串作为.csv分隔符?例如:col1,col2,col3,col4

需要用于读取和输出的代码:

import csv
with open('a.csv', 'r') as infile, open('reordered.csv', 'a') as outfile:
    fieldnames = ['B', 'C', 'A', 'D']
    writer = csv.DictWriter(outfile, delimiter=',', fieldnames=fieldnames)
    writer.writeheader()
    for row in csv.DictReader(infile):
        writer.writerow(row)
我想查一下,但不清楚

更新:正如其他人指出的,这可能不是分隔符,而是分隔符和值。无论如何,“我的值”包含逗号,因此,列之间的模式有助于保持列结构。

如果要定义,则设置分隔符将无法获得所需的结果

import csv
with open('a.csv', 'r') as f:
    reader = csv.reader(f, delimiter=',', quotechar='"')
    for row in reader:
        print row
编辑:对于代码的更改,它看起来有点像:

with open('a.csv', 'r') as infile, open('reordered.csv', 'a') as outfile:
    fieldnamesout = ['B', 'C', 'A', 'D']
    fieldnamesin = ['A', 'B', 'C', 'D']
    reader = csv.DictReader(infile, delimiter=',', quotechar='"', fieldnames=fieldnamesin)
    writer = csv.DictWriter(outfile, delimiter=',', quotechar='"', fieldnames=fieldnamesout, quoting=csv.QUOTE_ALL)
    for row in reader:
        writer.writerow(row)

请注意quoting=csv.QUOTE“u ALL,它指示编写器根据quotechar引用所有字段,这可能是您想要的,也可能不是您想要的,其他选项将是quoting=csv.QUOTE”非数字。

似乎您的值是字符串文字。我不知道cvs模块是否可以开箱即用地处理这个问题。这不是解析问题,而是数据处理问题


您的值在引号字符中。因此,要么在处理数据字段_值时截断它们。替换“”,然后将它们重新添加到{}.formatfield_值上,要么直接对数据字段进行操作,保留引号字符。

是否尝试过使用类似分隔符=','?如果不尝试',“3x”quotechar=''和QUOTEING=csv.QUOTE_ALLI我认为您不希望引号成为分隔符的一部分,因为这将导致列值为col1、col2、col3和COL4是的,我尝试了:错误:分隔符必须是1个字符的字符串。谢谢。我确实看到了您的逻辑,但在重新排列列上面插入代码时遇到了问题。你能帮我替换一下我的代码吗?很好,保存在重新排列的列中。