【发布时间】:2018-08-09 04:09:03
【问题描述】:
我通过 simplejson 从 Windows INI 文件加载列表。该列表作为字符串读入,我需要将其转换回正确的列表,因此 arr[0] = [30, 40, 80] 和 arr[1] = [90, 255, 255]
config.ini:
Advanced Settings
tlhsv = "[30, 40, 80], [90, 255, 255]"
main.py
tlhsv = self.config.get('Advanced Settings', 'tlhsv')
print(tlhsv)
u'"[30, 40, 80], [90, 255, 255]"'
我到底应该怎么做呢?或者更好的是有一种方法可以格式化 INI 文件,以便它可以由 simplejson 自动正确读取。
我尝试以不同的方式格式化 ini,但使用 []、() 或逗号会给出 ValueError 并且什么也不解释。将其作为字符串读取就可以了。
【问题讨论】:
-
听起来 JSON 字符串应该包含
{"tlhsv": [[30, 40, 80], [90, 255, 255]]}- 注意两个引号已更改为括号。 -
你能告诉我们INI文件是什么样子的吗?加载它的代码是什么?因为您所拥有的不是您想要的有效 JSON(对于将字符串映射到字符串的 dict 而言,它是有效的 JSON,但您不希望该值是字符串),但是很难知道哪里出了问题,所以你可以在正确的地方做正确的事,而不是做错事然后尝试做不同的错误事来撤销它。
-
@abarnert 我更新了我在现实世界中精简的示例。我可以加载整数、浮点数和字符串,但不能加载不带引号的特殊字符。
-
@jasonharper 在列表中使用双方括号,在其余部分使用逗号和单方括号,并且 json.loads 会自动将它们作为列表加载。这绝对是关于如何正确格式化 ini 的答案,但 abhi 的答案是将字符串转回列表的正确答案。谢谢!
标签: python json python-2.7