Python 从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

我有一个csv文件中的信息,该文件最初是一个json对象(字典列表)。csv中的信息按行保存,其结构如下:

{   '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,您将不需要特别的解析技术。