我正在尝试使用Python列表中的值创建.csv文件 . 当我打印列表中的值时,它们都是unicode(?),即它们看起来像这样
[u'value 1', u'value 2', ...]
如果我遍历列表中的值,即 for v in mylist: print v
,它们看起来是纯文本 .
我可以在 print ','.join(mylist)
之间放一个 ,
我可以输出到一个文件,即
myfile = open(...)
print >>myfile, ','.join(mylist)
但是我想输出到CSV并且在列表中的值周围有分隔符,例如
"value 1", "value 2", ...
我找不到一种简单的方法来在格式中包含分隔符,例如我已经尝试了 join
声明 . 我怎样才能做到这一点?
10 回答
对于另一种方法,您可以在pandas中使用DataFrame:它可以轻松地将数据转储到csv,就像下面的代码一样:
这是Alex Martelli的安全版本:
Jupyter笔记本
让我们说你的清单是
A
然后,您可以将以下广告编码为csv文件(仅限列!)
你应该确定使用CSV模块,但是你可能需要编写unicode . 对于那些需要编写unicode的人来说,这是示例页面中的类,您可以将其用作util模块:
编辑:这只适用于python 2.x.
要使它与python 3.x一起使用,请将
w
替换为w
(see this SO answer)这是另一个不需要
csv
模块的解决方案 .示例:
但是,如果初始列表包含一些“,它们将不会被转义 . 如果需要,可以调用一个函数来逃避它:
使用python的
csv
模块读取和写入逗号或制表符分隔的文件 . csv模块是首选,因为它可以很好地控制引用 .例如,以下是您的工作示例:
生产环境 :
在这种情况下,您可以使用string.join方法 .
为清晰起见,分成几行 - 这是一个互动会话
或者作为一条线
但是,您可能遇到的问题是您的字符串已嵌入引号 . 如果是这种情况,您需要决定如何逃避它们 .
CSV module可以为您处理所有这些,允许您在各种引用选项(所有字段,仅包含引号和分隔符的字段,仅非数字字段等)之间进行选择以及如何控制字符串(双引号或转义)字符串) . 如果您的值很简单,string.join可能会正常,但如果您需要管理大量边缘情况,请使用可用模块 .
这个解决方案听起来很疯狂,但是像蜜一样顺畅
该文件由csvwriter编写,因此保持csv属性,即以逗号分隔 . 分隔符通过每次将列表项移动到下一行来帮助主要部分 .
我发现的最佳选择是使用numpy module中的
savetxt
:如果您有多个需要堆叠的列表