我在文本文件中有一个 json 列表,如下所示
[{"key1": "value1", "key2": "value2"},{},{}]
现在我正在尝试读取该文件并将其转换为字典列表,以便我可以使用代码迭代和使用这些键值对 -
with open('./file.txt') as f:
listOfDict= json.load(f)
我收到错误 -
ValueError: Invalid \escape: line 1 column 2005707 (char 2005706)
我认为这可能是因为有些值是这样的 - 例如。 {“key1”:“ENERGIZER\xc2”}
我在写入此文件时忘记使用 text.encode("utf-8")。 相反,我在写入文件时使用了 str(text)。
这就是导致此错误的原因吗?我该如何解决此问题。
最佳答案
好吧,您必须进行一些字符串操作才能转义和解码。
这取决于您的数据是否包含转义的 Unicode 或转义的 8 位字符集,例如 latin1
或 cp1252
。您必须进行试验,看看什么对您的数据有效。
如果它是转义的 Unicode,您可以简单地执行以下操作:
import io
with io.open('./file.txt', 'r', encoding='unicode_escape') as f:
listOfDict= json.load(f)
如果转义 8 位“latin1”,您需要执行以下操作:
with open('./file.txt', 'r') as f:
# read, convert escape to byte, convert bytes as 'latin1'
decoded_json = f.read().decode('string_escape').decode('latin1')
listOfDict = json.loads(decoded_json) # Note the "s".
关于python - json.loads() 中的无效\转义,python 2.7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38931535/