如何避免从python中的列表连接的逗号分隔字符串中引用

时间:2016-09-22 10:20:27

标签: python string csv quotes

我通过从Python 3.5中的列表中连接字符串创建了一个逗号分隔的字符串,并使用它使用configobj将其写入INI文件。以下是Ubuntu 16.04终端中使用的示例Python脚本:

sudo python3 << EOP
from configobj import ConfigObj

config=ConfigObj("myconfig.ini")
config['items']={}
itemlist=('item1','item2')
csvstr=",".join(list)
config['items']['itemlist'] = csvstr
config.write()
EOP

这会将带引号的字符串写为“item1,item2”,如下所示。

[items]
itemlist = "item1,item2"

但是,如果项目与其他字符(如“;”)连接,则会写入不带引号的字符串!如何让它写出逗号分隔的字符串而不加引号?

感谢任何提示或解决方案。

2 个答案:

答案 0 :(得分:2)

逗号保留用于字段分隔,因此您不能拥有(除非really want to)带有逗号的不带引号的字符串值。显然你确实想要一个值列表,所以只需将列表作为值传递:

from configobj import ConfigObj

config=ConfigObj("myconfig.ini")
config['items']={}
itemlist=['item1','item2']
config['items']['itemlist'] = itemlist
config.write()

这将导致

[items]
itemlist = item1, item2

答案 1 :(得分:2)

另一种解决方案是使用config = ConfigObj('myconfig.ini', list_values=False) 关键字:

list_values=False

As the documentation says,如果[items] itemlist = item1,item2 ,则在读写时不会引用或不引用单行值。

结果:

null