采用python语言对csv文件写入字符串,Python - 将数据写入csv格式为字符串(不是文件)...

I want to cast data like [1,2,'a','He said "what do you mean?"'] to a csv-formatted string.

Normally one would use csv.writer() for this, because it handles all the crazy edge cases (comma escaping, quote mark escaping, CSV dialects, etc.) The catch is that csv.writer() expects to output to a file object, not to a string.

My current solution is this somewhat hacky function:

def CSV_String_Writeline(data):

class Dummy_Writer:

def write(self,instring):

self.outstring = instring.strip("\r\n")

dw = Dummy_Writer()

csv_w = csv.writer( dw )

csv_w.writerow(data)

return dw.outstring

Can anyone give a more elegant solution that still handles the edge cases well?

Edit: Here's how I ended up doing it:

def csv2string(data):

si = StringIO.StringIO()

cw = csv.writer(si)

cw.writerow(data)

return si.getvalue().strip('\r\n')

解决方案

You could use StringIO instead of your own Dummy_Writer:

This module implements a file-like class, StringIO, that reads and writes a string buffer (also known as memory files).

There is also cStringIO, which is a faster version of the StringIO class.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值