首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由于转义字符,python中的Json打印输出不同于写输出。

由于转义字符,python中的Json打印输出不同于写输出。
EN

Stack Overflow用户
提问于 2013-09-27 20:34:34
回答 1查看 1.9K关注 0票数 5

我有一个管道分隔文件,我正试图使用python (2.7)将其转换为json。代码读取文本文件,根据分隔符对其进行转换,然后将其转换为json。

当我运行代码时,终端窗口中的输出是正确的。但是,当我写入文件时,转义斜杠将被添加到输出中。没有转义符的引号被添加到输出文件的开头和结尾。

基于其他答案,每次处理json转储时,我都尝试将ensure_ascii设置为false。但这不管用。

input.txt:

代码语言:javascript
复制
392|0|9

代码:

代码语言:javascript
复制
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)

终端输出:

代码语言:javascript
复制
[{"A": "392", "C": "9", "B": "0"}]

以data.json表示的输出:

代码语言:javascript
复制
"[{\"A\": \"392\", \"C\": \"9\", \"B\": \"0\"}]"

我是Python新手。如何从.json文件中删除引号(开头和结尾处)和斜杠?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-27 20:37:13

您将数据编码为JSON两次。out已经编码了JSON,但是您可以通过将JSON字符串转储到outfile来再次对其进行编码。

只需将其写出,而无需再次编码:

代码语言:javascript
复制
with open('data.json', 'w') as outfile:
    outfile.write(out)

请删除ensure_ascii=False选项,因为json.dumps()将生成unicode值,这将要求您在写入文件时将它们编码到合适的编解码器(read,UTF变体之一)中。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19059627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档