2013-06-24 33 views
4

我有一个文本字符串。该字符串中有多个换行符。我想创建一个包含此字符串的csv,以便将其导入到excel中。但是因为这个,我相信我必须将所有新行转换为回车符,并将文本换成引号。将字符串转换为Excel友好格式

但是试图将文本转换少量我得到如下结果时:

>>> xyz = abc.replace('\n','\r') 
>>> xyz 
'\rA\rB\rC\rD\rE\rF\rG\r\r' 
>>> print xyz 
G 

任何想法,我在做什么

以前

>>> abc = "\nA\nB\nC\nD\nE\nF\nG\n\n" 
>>> print abc 

A 
B 
C 
D 
E 
F 
G 

后错了?

回答

3

尝试将该字符串写入文件并在文本编辑器中查看它。

您的控制台正在将回车解释为“返回到行首”,因此A会打印,然后B会打印出A所在的位置等,直到G被打印到F所在的位置。

4

使用the Python csv module,它已经知道如何做到这一点。

import csv 
with open('xyz.csv', 'wb') as outfile: 
    w = csv.writer(outfile) 
    w.writerow(['a\nb\nc']) 

运行之后,您可以检查输出(-A,在GNU猫,显示非打印字符的表示):

$ cat -A xyz.csv 
"a$ 
b$ 
c"^M$ 

请注意,您还可以使用cat -A明白为什么你事先执行似乎是做错了事情。

+0

谢谢你,当我用上面的代码来创建一个CSV它仍然将所有文成单独的细胞(??) – felix001

+0

@ felix001:这工作。你可能没有足够小心地遵守它。请注意,'writerow'方法接受一个序列,将其分解为单独的单元格。在这里,Charles给它一个只有一个元素的序列,并且这个元素是一个恰好包含嵌入换行符的字符串。如果他直接传递了一个字符串(不在列表中),那么*字符串本身*就是被分成单元格(每个单元格包含一个字符)的序列。 –