我有一个管道分隔文件,我试图使用python(2.7)转换为json.代码读取文本文件,根据分隔符转换它,然后将其转换为json.
当我运行代码时,终端窗口中的输出是正确的.但是,当我写入文件时,转义斜杠\将被添加到输出中.并且没有转义的引号被添加到输出文件的开头和结尾.
基于其他答案,我每次处理json转储时都尝试将ensure_ascii设置为false.但那不起作用.
input.txt中:
392|0|9
Run Code Online (Sandbox Code Playgroud)
码:
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)
Run Code Online (Sandbox Code Playgroud)
终端输出:
[{"A": "392", "C": "9", "B": "0"}]
Run Code Online (Sandbox Code Playgroud)
data.json中的输出:
"[{\"A\": \"392\", \"C\": \"9\", \"B\": \"0\"}]"
Run Code Online (Sandbox Code Playgroud)
我是Python的新手.如何删除引号(在开头和结尾)和.json文件中的斜杠?
您将数据编码为JSON 两次.已经out是JSON编码,但您可以通过转储JSON字符串再次对其进行编码.outfile
只需将其写出来,无需再次编码:
with open('data.json', 'w') as outfile:
outfile.write(out)
Run Code Online (Sandbox Code Playgroud)
请删除该ensure_ascii=False选项,json.dumps()然后生成unicode值,这将要求您在写入文件时将它们编码为合适的编解码器(读取,UTF变体之一).
| 归档时间: |
|
| 查看次数: |
1754 次 |
| 最近记录: |