2017-05-01 14 views
0

ich ein city.json bekam, das ich mit Parsen von einer Website gesammelt und es wird unterPython - JSON Elemente zu einer Liste anhängen

[ 
{"city": ["\r\nLondon\r\n"]}, 
{"city": ["\r\nEdinburgh\r\n"]}, 
{"city": ["\r\nBlackpool\r\n"]}, 
{"city": ["\r\nBrighton & Hove\r\n"]}, 
{"city": ["\r\nGlasgow\r\n"]}, 
{"city": ["\r\nManchester\r\n"]}, 
{"city": ["\r\nYork\r\n"]}, 
{"city": ["\r\nTorquay\r\n"]}, 
{"city": ["\r\nInverness\r\n"]}, 
{"city": ["\r\nLiverpool\r\n"]}, 
{"city": ["\r\nBirmingham\r\n"]}, 
{"city": ["\r\nBath\r\n"]}, 
{"city": ["\r\nScarborough\r\n"]}, 
{"city": ["\r\nCambridge\r\n"]}, 
{"city": ["\r\nNewquay\r\n"]}, 
{"city": ["\r\nAberdeen\r\n"]}, 
{"city": ["\r\nBelfast\r\n"]}, 
{"city": ["\r\nCardiff\r\n"]}, 
{"city": ["\r\nNewcastle upon Tyne\r\n"]}, 
{"city": ["\r\nBournemouth\r\n"]}, 
{"city": ["\r\nWhitby\r\n"]}, 
{"city": ["\r\nLlandudno\r\n"]}, 
{"city": ["\r\nOxford\r\n"]}, 
{"city": ["\r\nBristol\r\n"]}, 
{"city": ["\r\nLeeds\r\n"]} 
] 

Ich brauche zu bekommen jede der Stadt und hängen Sie es gezeigt meine Liste. Bisher ist es das, was ich habe

getan
import json 

myList = [] 

with open('city.json') as json_data: 
    data = json.load(json_data) 
    for index in data: 
     myList.append(index['city']) 

for index in range(len(myList)): 
    print (str(myList[index]).replace("[","").replace("]","").replace("\r\n","")) 

Ich brauche meine Liste nur aus [London, Edinburgh, Blackpool ...] keine anderen Zeichen wie an der Spitze gesehen. Wie kann ich dieses Problem lösen?

Antwort

4

Jeder Wert in jedem Wörterbuch ist eine Liste mit einer Zeichenfolge. Nehmen Sie einfach das erste Element:

with open('city.json') as json_data: 
    data = json.load(json_data) 
    for index in data: 
     myList.append(index['city'][0]) # note the indexing 

Möglicherweise möchten Sie str.strip() verwenden, um die \r\n Leerzeichen um jede Stadt Wert zu entfernen:

with open('city.json') as json_data: 
    data = json.load(json_data) 
    for index in data: 
     myList.append(index['city'][0].strip()) 

Sie können das Ganze in einem list comprehension setzen, keine Notwendigkeit zu verwenden list.append():

with open('city.json') as json_data: 
    data = json.load(json_data) 
    myList = [d['city'][0].strip() for d in data] 

Demo, Ihre JSON Probe in die Zeichenfolge setzen json_data:

>>> data = json.loads(json_data) 
>>> [d['city'][0].strip() for d in data] 
['London', 'Edinburgh', 'Blackpool', 'Brighton & Hove', 'Glasgow', 'Manchester', 'York', 'Torquay', 'Inverness', 'Liverpool', 'Birmingham', 'Bath', 'Scarborough', 'Cambridge', 'Newquay', 'Aberdeen', 'Belfast', 'Cardiff', 'Newcastle upon Tyne', 'Bournemouth', 'Whitby', 'Llandudno', 'Oxford', 'Bristol', 'Leeds'] 
>>> from pprint import pprint 
>>> pprint(_) 
['London', 
'Edinburgh', 
'Blackpool', 
'Brighton & Hove', 
'Glasgow', 
'Manchester', 
'York', 
'Torquay', 
'Inverness', 
'Liverpool', 
'Birmingham', 
'Bath', 
'Scarborough', 
'Cambridge', 
'Newquay', 
'Aberdeen', 
'Belfast', 
'Cardiff', 
'Newcastle upon Tyne', 
'Bournemouth', 
'Whitby', 
'Llandudno', 
'Oxford', 
'Bristol', 
'Leeds'] 
+1

@zdar: Ich neige dazu, viele Follow-up-Bearbeitung zu tun, wenn ich antworte; Danke für dieses Update, aber das war schon in der Pipeline. :-) –

+0

Vielen Dank, es funktioniert. – erkevarol

Verwandte Themen