首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python搜索文件返回[]

Python搜索文件返回[]
EN

Stack Overflow用户
提问于 2017-02-04 01:36:25
回答 2查看 55关注 0票数 0

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

JSON文件内容:

代码语言:javascript
复制
[{"id":"001788fffe48cbdb","username":"tom123"}]

代码:

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

回答 2

Stack Overflow用户

发布于 2017-02-04 01:39:05

f是一个文件对象,它是一个类似迭代器的对象,这意味着当您迭代它时,您已经使用了它,并且不能再使用它。在本例中,您首先在下面的代码行中使用它:

代码语言:javascript
复制
print(f.read())

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

代码语言:javascript
复制
with open("first.json") as f
    content = json.load(f)
    username = [index["username"] for index in content]
    print(username)

此外,作为一种基于函数的方法,您可以使用operator.itemgettermap()来获得包含所有用户名的迭代器(这在内存使用方面更加优化):

代码语言:javascript
复制
from operator import itemgetter
with open("first.json") as f
        content = json.load(f)
        usernames = map(itemgetter("username"), content)
票数 1
EN

Stack Overflow用户

发布于 2017-02-04 01:41:14

也许像这样,您想要解析json,以便可以像使用字典一样使用它。

代码语言:javascript
复制
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()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42029938

复制
相关文章

相似问题

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