从具有地址信息的 .csv 列中提取坐标数据
pull coordinate data from .csv column that has address info
我有一系列 .csv 文件,在特定列中包含坐标信息。问题是,坐标信息在同一列中有地址信息,而且格式并不总是相同的。
15206 PLANK RD
BAKER, LA 70714
(30.586316235000027, -91.12488045299995)
或
LA
(31.312663324000027, -92.44567750499994)
所以我需要做的就是将纬度数据拉到一个新列中,将长数据拉到一个新列中。
我确信这是一个非常简单直接的过程,我只是不确定如何解决这个问题。
我想要一个 python 脚本,它可以在我指定要搜索的列的地方为我执行此操作,并让它仅将坐标信息拉入它从中拉取数据的同一行中的新列。
这是一个可以从所需列中提取 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'
我有一系列 .csv 文件,在特定列中包含坐标信息。问题是,坐标信息在同一列中有地址信息,而且格式并不总是相同的。
15206 PLANK RD
BAKER, LA 70714
(30.586316235000027, -91.12488045299995)
或
LA
(31.312663324000027, -92.44567750499994)
所以我需要做的就是将纬度数据拉到一个新列中,将长数据拉到一个新列中。 我确信这是一个非常简单直接的过程,我只是不确定如何解决这个问题。 我想要一个 python 脚本,它可以在我指定要搜索的列的地方为我执行此操作,并让它仅将坐标信息拉入它从中拉取数据的同一行中的新列。
这是一个可以从所需列中提取 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'