Python 从csv文件中提取信息
我有一个csv文件中的信息,该文件最初是一个json对象(字典列表)。csv中的信息按行保存,其结构如下:Python 从csv文件中提取信息,python,regex,csv,Python,Regex,Csv,我有一个csv文件中的信息,该文件最初是一个json对象(字典列表)。csv中的信息按行保存,其结构如下: { 'geometry': { 'location': { 'lat': 48.121096, 'lng': 14.868725}}, 'icon': 'http://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png', 'id': '322572963ad2ccd534d8a6ec3e71e
{ 'geometry': { 'location': { 'lat': 48.121096, 'lng': 14.868725}},
'icon': 'http://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png',
'id': '322572963ad2ccd534d8a6ec3e71eba67953400c',
'name': u"McDonald's \xd6sterreich",
'price_level': 1,
'reference': 'CoQBeAAAAOQrvtFrvdPFavW8IPAtNz5BqUOxB6j0dAWXZzgx673-pYV-JLzDk4q9Q1lK2e1Tmn7xiGSwrOAT27rlnr00NJvskvS7isZOIz48RWv8SZo4jbl_RiiEfpz7SpD3fQNB31aJexfB6n2SsNz6FL8StgZIdErv6u4mR-a-xCbMU5CREhBB3r-DyRrOks1EPQz22JQXGhSmPRi0Ht5k0VPTAFVefDF0HQ3xZQ',
'types': ['restaurant', 'food', 'establishment'],
'vicinity': u'Waidhofner Stra\xdfe 1, im City Center Amstetten'}
有时这些行包含两个或多个字典列表。我感兴趣提取的信息是“lat”和“lng”。理想情况下,我希望在这样的数据框中有这两个坐标:
lat lng
48.098 5.0886
48.110 5.1390
48.234 5.1679
这是我目前掌握的代码:
import re
import csv
datafile = open('c:/users/J/Desktop/listaraw.csv', 'r')
datareader = csv.reader(datafile)
data = []
for row in datareader:
data.append(row)
point_re = re.compile('.*lat.*;')
point_lat = point_re.search(str(data)).group(1)
但我得到了以下信息:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: no such group
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
索引器:没有这样的组
关于如何完成这项任务有什么想法吗
以下是供进一步参考的文件:
谢谢用json模块加载数据怎么样 不幸的是,您的数据不是有效的json。属性名称必须有双引号 下面是一个修改后的示例
import json
data = """{
"geometry": {
"location": {
"lat": 48.121096,
"lng": 14.868725
}
},
"icon": "http://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png",
"id": "322572963ad2ccd534d8a6ec3e71eba67953400c",
"name": "McDonald's Osterreich",
"price_level": 1,
"reference": "CoQBeAAAAOQrvtFrvdPFavW8IPAtNz5BqUOxB6j0dAWXZzgx673-pYV-JLzDk4q9Q1lK2e1Tmn7xiGSwrOAT27rlnr00NJvskvS7isZOIz48RWv8SZo4jbl_RiiEfpz7SpD3fQNB31aJexfB6n2SsNz6FL8StgZIdErv6u4mR-a-xCbMU5CREhBB3r-DyRrOks1EPQz22JQXGhSmPRi0Ht5k0VPTAFVefDF0HQ3xZQ",
"types": ["restaurant", "food", "establishment"],
"vicinity": "Waidhofner Strasse 1, im City Center Amstetten"
}
"""
jdata = json.loads(data)
print jdata['geometry']['location']
只需要将双引号替换为能够计算Python语法的内容 此代码将检索您的坐标:
import ast
for line in open('listaraw.csv'):
line = ast.literal_eval(line.replace('""', '\\"'))
if isinstance(line, tuple):
items = map(ast.literal_eval, list(line))
else:
items = ast.literal_eval(line)
if isinstance(items, dict):
items = [items]
for item in items:
print item['geometry']['location']
您的数据不是CSV。在
“
在每一行上。这可不是CSV。谢谢,这是我需要的lat和lng。如果我想打印回csv?@asado23,您只需打开一个新文件进行写入,并用合适的分隔符逐行写入坐标。但这不是让你一开始就陷入麻烦的原因吗?使用正确的json,您将不需要特别的解析技术。