我想把一个字符串列表写到一个文件中,就像下面的分隔符一样。
res = [u'123', u'hello world']
当我尝试像下面这样用TAB分割时,它给了我一个正确格式的字符串。
writer = csv.writer(sys.stdout, delimiter="\t")
writer.writerow(res)
gives --> 123 hello world
但是当我尝试使用 delimiter=" "
它给了我空格,但有引号,比如下面。
123 "hello world"
我如何去除引号。这样,当我使用空格作为分隔符时,我就会得到 123 hello world
.
EIDT注意:当我试着使用escapechar时,它不会产生任何双引号。但是在我的testdata中,每一个地方都出现了一个空格,它让它变成了双引号。
你可以设置 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'])
生产。
Spam Spam Spam Spam Spam Baked Beans
Spam Lovely Spam Wonderful Spam
如果你做 QUOTING_NONE
你也 需要 和转义字符。
你需要csv库吗? 只需要连接字符串...
>>> res = [u'123', u'hello']
>>> print res
[u'123', u'hello']
>>> print " ".join(res)
123 hello
对我来说,有效的方法是使用一个常规的编写器,而不是csv.writer,并且简单地在列之间使用定界符(在我的例子中是'\t')。
with open(target_path, 'w', encoding='utf-8') as fd:
# some code iterating over a pandas daftaframe called mydf
# create a string out of column 0, '\t' (tab delimiter) and column 1:
output = mydf.loc[i][0] + '\t' + mydf.loc[i][1] +'\n'
# write that output string (line) to the file in every iteration
fd.write(output)
这可能不是 "正确 "的方法,但它绝对保持了我项目中的原始行数,其中包括许多字符串和引号。