从具有地址信息的.csv列中提取坐标数据

时间:2016-10-26 17:56:32

标签: python csv data-extraction

我有一系列.csv文件,其中包含特定列中的坐标信息。问题是,坐标信息在同一列中具有地址信息,并且不总是以相同的格式。

15206 PLANK RD
BAKER, LA 70714
(30.586316235000027, -91.12488045299995)

LA
(31.312663324000027, -92.44567750499994)

所以我需要做的就是将lat数据拉入新列,将长数据拉入新列。 我确信这是一个非常简单的直接过程,我只是不确定如何解决这个问题。 我希望有一个python脚本,可以为我指定要搜索的列,并将它只将坐标信息拉入它从中提取数据的相同行中的新列。

1 个答案:

答案 0 :(得分:0)

这是一个可以从所需列中提取长/纬度字段的小片段。它使用正则表达式从给定列中提取两个坐标。

output = []
with open(DATA_CSV_NAME, 'rb') as csvfile:
    datareader = csv.reader(csvfile)
    for row in datareader:
        m = re.search('\((-?\d+\.\d+),\s(-?\d+\.\d+)\)', row[DESIRED_COLUMN])
        lat = m.group(1) if m else '0.0'
        long = m.group(2) if m else '0.0'
        row.append(lat)
        row.append(long)
        output.append(row)

这是正则表达式的一个例子:

>>> m = re.search('\((-?\d+\.\d+),\s(-?\d+\.\d+)\)', '15206 PLANK RD\nBAKER, LA 70714\n(31.312663324000027, -92.44567750499994)')
>>> m.group(0)
'(31.312663324000027, -92.44567750499994)'
>>> m.group(1)
'31.312663324000027'
>>> m.group(2)
'-92.44567750499994'