【发布时间】:2016-05-10 10:36:02
【问题描述】:
我在使用 json 时遇到了奇怪的问题。下面的程序打开一个文件,导入一个字典,添加条目,然后再次保存字典。当程序第二次运行时,在字典的每个键和每个值前面都添加了一个字母“u”。这些不是累积的;多次运行程序不会添加多个“u”。
import json
file1 = open('phonebook.txt', 'r+')
phonebook = json.load(file1)
print phonebook
while(True):
name = raw_input("Name?")
if name == "":
break
number = raw_input("Number?")
phonebook[name] = number
file1.close()
file1 = open('phonebook.txt', 'w')
json.dump(phonebook, file1)
print phonebook
顺便说一句,一个不相关的特性:除非我以写入模式关闭并重新打开文件,否则我会收到错误消息。我不知道为什么会这样。
【问题讨论】:
-
使用转储(将其转储为字符串,而不是对象)并且 u'' 前缀告诉您它是 unicode 数据。
-
顺便说一下,存储的文件有正确的字典。添加必须发生在 json.load() 过程中。
-
@HGNY:添加发生在
print,实际上,特别是在unicode.__repr__,它是从dict.__repr__调用的。 -
额外的
u''不会影响数据或数据的处理方式,它只是加载(unicode 字符串)与常规字符串的方式。 -
啊哈——所以我可以继续使用原始代码!
标签: python json file dictionary