使用python csv writer而不引用

sam*_*ara 9 python csv quotes double-quotes

我正在尝试将下面的字符串列表写入由给定分隔符分隔的文件中.

res = [u'123', u'hello world']
Run Code Online (Sandbox Code Playgroud)

当我尝试按下面的TAB分割它给我正确格式化的字符串.

writer = csv.writer(sys.stdout, delimiter="\t")
writer.writerow(res)

gives --> 123   hello world
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用空间分割时delimiter=" ",它给了我空间但是带有下面的引号.

123 "hello world"
Run Code Online (Sandbox Code Playgroud)

如何删除引号.因此,当我使用空格作为分隔符时,我应该得到 123 hello world.

EIDT:当我尝试使用escapechar时,它不会发出任何双引号.但是在我的测试数据的每个地方它都显示出一个空间,它使它变成了两倍.

Dai*_*air 11

您可以将其设置为csv.writer不引用任何内容,quoting=csv.QUOTE_NONE例如:

import csv
with open('eggs.csv', 'wb') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            escapechar=' ', quoting=csv.QUOTE_NONE)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
Run Code Online (Sandbox Code Playgroud)

生产:

Spam Spam Spam Spam Spam Baked  Beans
Spam Lovely  Spam Wonderful  Spam
Run Code Online (Sandbox Code Playgroud)

如果你这样做,QUOTING_NONE你也需要和逃避性格.


Pet*_*per 8

引用行为由quoting提供给编写器的各种参数控制(或者Dialect如果您喜欢以这种方式执行操作,则设置在对象上).默认设置是QUOTE_MINIMAL,除非值包含分隔符,引号字符或行终止符,否则不会产生您描述的行为.仔细检查您的测试数据 - [u'123', u'hello']不会产生您描述的内容,但[u'123', u' hello']会产生.

您可以指定QUOTE_NONE是否确定这是您想要的行为,在这种情况下,如果您设置了转义字符,它将尝试转义分隔符字符的实例,如果不设置则引发异常.