我的文件中有以下数据。在阅读并尝试转换为JSON时出错。
文件(modes.txt):
{'status': True, 'mode': 'full'} {'status': False, 'mode': 'half'}
代码:
with open("modes.txt",'r') as f:
ds = json.dumps(json.load(f))
错误:
JSONDecodeError:期望属性名称用双引号引起来: 第1行第2列(字符1)
错误在预期的行上,因为文件中的文件字符串未用双引号引起来。 我可以解决将单引号替换为双引号的问题。 在这种情况下,什么是好的/优雅的解决方案?
答案 0 :(得分:2)
源文件的json格式存在三个问题(tl; dr:它不是有效的json)
True
在json中为true
,与False
的{{1}} 您可以通过以下方法解决这些问题:
false
这将从文件中读取每一行,非常粗略地对其进行修复,然后将其附加到列表中。最终结果是字典列表。
请注意,此代码是一个示例,旨在演示可能的解决方法,请不要在生产中实际使用它。如果您的modes.txt包含转义的双引号怎么办?还是字符串中的单词import json
ds = list()
with open("modes.txt", 'r') as f:
for line in f.readlines():
fixed_line = line.replace('\'', '"').replace("False", "false").replace("True", "true").strip()
ds.append(json.loads(fixed_line))
或True
?
简短的回答:您应该修复输入文件以包含有效的json。