2017-02-03 4 views
0

Я пытаюсь найти файл JSON для имени пользователя, но он просто возвращает [], а не tom123.Python Search File Returning []

содержание 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() 

ответ

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.itemgetter и map() для того, чтобы получить итератор содержит все имена пользователей (которые более оптимизированные с точки зрения использования памяти):

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

Спасибо, сейчас работает :) –

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() 
+0

Спасибо, сейчас работает :) –