python - 地址范围的 Pythonic 数据清理
问题描述
我需要知道是否可以通过 Python 完成以下任务。
我有一个包含 4,300 个地址的列表,每个地址都包含一系列地址,如下所示:
- 8519-21 S 百老汇
- 8700-6 河景大道
- 当归街 822-4 号
- 8442-6 N 百老汇
我想隔离范围内的第一个地址和最后一个地址。因此,以 1 为例,我需要输出给我 8519 S Broadway 和 8521 S Broadway,每个都在自己的行中。
在某些情况下,例如 1 和 3,我只需要第一个数字的前两位数字即可完成第二个地址。我尝试在 Excel 中使用文本到列 (-),然后使用 CONCATENATE 和 LEFT(cell,2),但是对于 2 和 4 等实例,我没有得到正确的地址,我需要地址的前三位。有没有办法编写一个python脚本来解决这个问题?
解决方案
谢谢大家的帮助和建议。这就是我最终解决它的方式:
import re
import csv
from csv import DictReader
dash_add = []
def get_address_list(file):
with open(file) as f:
reader = csv.DictReader(f)
for row in reader:
adds = row['Siteaddr']
if "-" in adds:
dash_add.append(adds)
z = []
def get_formatted_address(address):
numeric = address.split(" ")[0]
text = address.replace(numeric, "").strip()
start = numeric.split("-")[0]
end = numeric.split("-")[1]
end = start[:-len(end)] + end
return [start + " " + text, end + " " + text]
get_address_list('./data/map_data_112318.csv')
[z.extend(get_formatted_address(i)) for i in dash_add]
with open('formatted_addresses.csv', 'w') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['Address'])
for v in z:
writer.writerows([[v]])
推荐阅读
- python - Django Rest Framework Api 查看 GET
- docker - 重启docker容器时自动启动ssh
- hive - Hive - 是否必须将“=”外部表视为分区
- laravel - Laravel,按月搜索,但我找不到任何东西
- java - JLabel 在 while 循环中不更新
- python-3.x - Python 文件对象中的 next() 方法
- python - 将 matplotlib 图上的鼠标单击坐标保存到 Python 中的列表中,单击后与图断开连接
- python - 日期前加0
- regex - 嵌套捕获组
- node.js - 如何处理节点中具有多个字段的表单中的表单数据?