如何指定(当读取文件时)和分配(在输出中)这个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)我试图查看它( https://docs.python.org/2.0/ref/strings.html )等,但它不清楚。
更新:正如其他人指出的,这可能不是","分隔符,而是一个分隔符和"values" 。 无论如何,我的值包含逗号,所以列之间的","模式有助于维护列结构。
How to specify (when reading a file) and assign (in output) this 3-character string"," as .csv delimiter? For example: "col1","col2","col3","col4"
The code where it needs to be used for reading and output:
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)I tried to look it up (https://docs.python.org/2.0/ref/strings.html), etc. but it is not clear.
UPDATE: As pointed out by others, this may not be "," delimiter, but a , delimiter and "values". Regardless, my values contain commas ,, so the "," pattern between columns helps to maintain column structure.
最满意答案
你会想定义引号字符 ,设置分隔符不会得到你想要的结果。
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_ALL ,它指示作者根据quotechar引用所有字段,这可能是也可能不是你想要的,其他选项将quoting=csv.QUOTE_NONNUMERIC 。
You'll want to define the quote character, setting the delimiter will not get you the desired results.
import csv with open('a.csv', 'r') as f: reader = csv.reader(f, delimiter=',', quotechar='"') for row in reader: print rowEdit: As for changes to your code, it would look somewhat like this:
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)Note the quoting=csv.QUOTE_ALL, which instructs the writer to quote all fields according to the quotechar, this may or may not be what you want, other options would be quoting=csv.QUOTE_NONNUMERIC.
更多推荐
发布评论