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

How to avoid quotes from a comma separated string joined from a list in python

我通过连接 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"

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

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

逗号是为字段分隔而保留的,因此您不能(除非您 )有一个不带引号的字符串值,其中包含逗号。显然你确实想要一个值列表,所以只传递一个列表作为值:

from configobj import ConfigObj

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

这将导致

[items]
itemlist = item1, item2

另一个解决方案是使用list_values关键字:

config = ConfigObj('myconfig.ini', list_values=False)

As the documentation says,如果list_values=False则单行值在读写时不带引号或不带引号。

结果:

[items]
itemlist = item1,item2