У меня есть текстовый файл, заполненный данными о месте, предоставленными twitter api. Вот выборочные данные 2 линииПреобразование в список словарей
{'country': 'United Kingdom', 'full_name': 'Dorridge, England', 'id': '31fe56e2e7d5792a', 'country_code': 'GB', 'name': 'Dorridge', 'attributes': {}, 'contained_within': [], 'place_type': 'city', 'bounding_box': {'coordinates': [[[-1.7718518, 52.3635912], [-1.7266702, 52.3635912], [-1.7266702, 52.4091167], [-1.7718518, 52.4091167]]], 'type': 'Polygon'}, 'url': 'https://api.twitter.com/1.1/geo/id/31fe56e2e7d5792a.json'}
{'country': 'India', 'full_name': 'New Delhi, India', 'id': '317fcc4b21a604d5', 'country_code': 'IN', 'name': 'New Delhi', 'attributes': {}, 'contained_within': [], 'place_type': 'city', 'bounding_box': {'coordinates': [[[76.84252, 28.397657], [77.347652, 28.397657], [77.347652, 28.879322], [76.84252, 28.879322]]], 'type': 'Polygon'}, 'url': 'https://api.twitter.com/1.1/geo/id/317fcc4b21a604d5.json'}
Я хочу, чтобы «страна», «имя» и «cordinates» подали каждого заказа line.In, чтобы сделать это, мы должны повторять построчно весь file.so я добавить каждую строку в список
data = []
with open('place.txt','r') as f:
for line in f:
data.append(line)
, когда я проверил тип данных он показывает, как «ул» вместо «Словаря».
type(data[0])
str
data[0].keys()
AttributeError: 'str' object has no attribute 'keys'
Как исправить это, чтобы его можно было сохранить в виде списка словарей.
Первоначально твиты были закодированы и декодируются следующим кодом:
f.write(jsonpickle.encode(tweet._json, unpicklable=False) + '\n') #encoded and saved to a .txt file
tweets.append(jsonpickle.decode(line)) # decoding
и место файла данные сохраняются по следующему коду:
fName = "place.txt"
newLine = "\n"
with open(fName, 'a', encoding='utf-8') as f:
for i in range(len(tweets)):
f.write('{}'.format(tweets[i]['place']) +'\n')
Вы читаете строку, которая выглядит как '{'country': 'United Kingdom', ...}' и т. Д. Однако вы хотите проанализировать это и превратить его в словарь. Я рекомендую использовать парсер JSON, чтобы упростить вашу работу. :) – apnorton
Чтобы добавить комментарий к @ apnorton, Python поставляется с [JSON library] (https://docs.python.org/2/library/json.html) – UnholySheep
Рациональное решение - это сохранение файлов в формате Json и легко загрузка данных в ожидаемом формате. Если это невозможно, вы можете использовать 'ast.literal_eval', чтобы оценить строку как объекты python. – Kasramvd