Python搜索文件返回[]

时间:2017-02-03 17:36:25

标签: python json python-3.x

我正在尝试在JSON文件中搜索用户名,但它只是返回[]而不是tom123。

JSON文件内容:

[{"id":"001788fffe48cbdb","username":"tom123"}]

代码:

import json
import re
import requests

f = open("first.json", "r+")
print(f.read())
username = [index["username"] for index in f.read()]
print(username)
f.close()

2 个答案:

答案 0 :(得分:1)

f是一个文件对象,它是一个类似迭代器的对象,这意味着当你迭代它时,你已经消耗了它,你又不能再使用它了。在这种情况下,您首先在以下行中使用它:

print(f.read())

另外,对于加载json文件,您应该使用json.load()函数。然后,您可以在阅读后保留内容,然后搜索保留的内容:

with open("first.json") as f
    content = json.load(f)
    username = [index["username"] for index in content]
    print(username)

同样作为一种基于功能的方法,您可以使用operator.itemgettermap()来获取包含所有用户名的迭代器(在内存使用方面更优化):

from operator import itemgetter
with open("first.json") as f
        content = json.load(f)
        usernames = map(itemgetter("username"), content)

答案 1 :(得分:1)

也许这样你想要解析json所以你可以像dict一样使用它

import json
import re
import requests

f = open("first.json", "r+")
data = json.loads(f.read())
username = [index["username"] for index in data]
print(username)
f.close()