如何在.csv中将“,”指定为3个字符的分隔符字符串?(How to specify “,” as 3

编程入门 行业动态 更新时间:2024-10-17 11:26:35
如何在.csv中将“,”指定为3个字符的分隔符字符串?(How to specify “,” as 3-character delimiter string in .csv?)

如何指定(当读取文件时)和分配(在输出中)这个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 row

Edit: 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.

更多推荐

本文发布于:2023-07-17 13:08:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1144922.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:字符串   中将   字符   分隔符   如何在

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!