保存Python字典时,json会为每个条目添加一个字符

时间:2016-02-01 20:25:01

标签: python json file dictionary

我和json有一些奇怪的问题。以下程序打开文件,导入字典,添加条目,并再次保存字典。当程序第二次运行时,一封信" u"已添加到字典的每个键和每个值的前面。这些不是累积的;多次运行程序不会添加多个" u" s。

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

顺便提一下,一个不相关的特性:除非我在写入模式下关闭并重新打开文件,否则我会收到错误消息。我不知道为什么会这样。

2 个答案:

答案 0 :(得分:2)

你代表unicode" string"。有关更详细的答案,请查看此处 What does the 'u' symbol mean in front of string values?

答案 1 :(得分:0)

好的 - 谢谢。这似乎有效:

import json
file1 = open('phonebook.txt', 'r')
phonebook = eval(file1.read())
while(True):
    name = raw_input("Name?")
    if name == "":
        break
    number = raw_input("Number?")
    phonebook[name] = number
file1.close()
file1 = open('phonebook.txt', 'w')
file1.write(json.dumps(phonebook))
file1.close()