将字符串转换为Excel友好格式

4

我有一个文本字符串。该字符串中有多个换行符。我想创建一个csv文件,包括这个字符串,以便我可以将其导入Excel。但是由于这个原因,我相信我必须将所有的新行转换为回车并将文本用引号括起来。

然而,当尝试转换少量文本时,我得到了以下结果:

转换前

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

A
B
C
D
E
F
G

之后

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

有什么想法我做错了吗?
3个回答

4
使用Python中的csv模块来处理此类问题,这个模块已经可以很好地完成这项任务。
import csv
with open('xyz.csv', 'wb') as outfile:
  w = csv.writer(outfile)
  w.writerow(['a\nb\nc'])

运行此命令后,您可以检查输出结果(在GNU cat中,-A选项会显示不可打印字符的表示形式):
$ cat -A xyz.csv 
"a$
b$
c"^M$

请注意,您也可以使用 cat -A 命令来查看为什么您之前的实现似乎做错了事情。

谢谢。当我使用上面的代码创建CSV文件时,它仍然将所有文本放入单独的单元格中(??) - felix001
@felix001:这个代码是有效的。你很可能没有仔细跟踪它。请注意,writerow方法接受一个序列,然后将其拆分成单独的单元格。在这里,Charles给出了一个只有一个元素的序列,而那个元素是一个字符串,其中包含了嵌入式换行符。如果他直接传递一个字符串(而不是列表中的字符串),那么字符串本身就会被拆分成单个字符组成的单元格。 - John Y

3

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

您的控制台将回车解释为“返回至行首”,因此 A 会先打印出来,然后 B 将在 A 的位置打印出来,以此类推,直到 G 在 F 的位置打印出来。


0

使用:

xyz = abc.replace('\n','\r\n')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接