我有一个管道分隔文件,我正试图使用python (2.7)将其转换为json。代码读取文本文件,根据分隔符对其进行转换,然后将其转换为json。
当我运行代码时,终端窗口中的输出是正确的。但是,当我写入文件时,转义斜杠将被添加到输出中。没有转义符的引号被添加到输出文件的开头和结尾。
基于其他答案,每次处理json转储时,我都尝试将ensure_ascii设置为false。但这不管用。
input.txt:
392|0|9代码:
import csv
import json
f = open( 'input.txt', 'rU')
reader = csv.DictReader( f, fieldnames = ( "A", "B", "C" ), delimiter='|')
out = json.dumps([ row for row in reader ], ensure_ascii=False)
print out
with open('data.json', 'w') as outfile:
json.dump(out, outfile, ensure_ascii=False)终端输出:
[{"A": "392", "C": "9", "B": "0"}]以data.json表示的输出:
"[{\"A\": \"392\", \"C\": \"9\", \"B\": \"0\"}]"我是Python新手。如何从.json文件中删除引号(开头和结尾处)和斜杠?
发布于 2013-09-27 20:37:13
您将数据编码为JSON两次。out已经编码了JSON,但是您可以通过将JSON字符串转储到outfile来再次对其进行编码。
只需将其写出,而无需再次编码:
with open('data.json', 'w') as outfile:
outfile.write(out)请删除ensure_ascii=False选项,因为json.dumps()将生成unicode值,这将要求您在写入文件时将它们编码到合适的编解码器(read,UTF变体之一)中。
https://stackoverflow.com/questions/19059627
复制相似问题