从包含地址的.csv列中提取坐标数据

2024-04-20 00:05:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一系列的.csv文件,在特定列中包含坐标信息。问题是,坐标信息的地址信息在同一列中,但格式并不总是相同的。你知道吗

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

或者

LA
(31.312663324000027, -92.44567750499994)

所以我需要做的是将lat数据拉入一个新列,将long数据拉入一个新列。 我相信这是一个非常简单的过程,我只是不知道如何解决这个问题。 我希望有一个python脚本可以帮我完成这项工作,我指定要搜索的列,并让它将坐标信息拉到新列中,这些列位于它从中提取数据的同一行中。你知道吗


Tags: 文件csv数据脚本信息过程地址格式
1条回答
网友
1楼 · 发布于 2024-04-20 00:05:57

下面是一个小片段,可以从所需列中提取long/lat字段。它使用正则表达式从给定列中提取两个坐标。你知道吗

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'

相关问题 更多 >