python - Python RegEx 从地址中拆分街道和号码
问题描述
我想拆分街道和号码。
这是我目前的解决方案:
matches = re.match(r'^(?<street>[^,]*?)[,\s]*(?P<number>\d[\w\s\-/]*$)', street_number)
但它不适用于某些情况。如果我有这样的例子:
working_examples = [
'Somestreet 1',
'Somestreet1',
'Somestreet1a',
'Somestreet 1a',
'Somestreet 1 a'
]
print(matches.groupdict())
打印 working_examples 的第一个元素:
{'street': 'Somestreet', 'number': '1'}
但是在这种情况下:
not_working_examples = [
'Some 1 street',
'Some 1a street'
]
它打印
{'street': 'Some ', 'number': '1 street'}
我的目标是拥有
{'street': 'Some 1 street', 'number': None}
解决方案
import re
examples = [
'Somestreet 1',
'Somestreet1',
'Somestreet1a',
'Somestreet 1a',
'Somestreet 1 a',
'Some 1 street',
'Some 1a street'
]
for s in examples:
matches = re.match(r'^(?P<street>.+?)[,\s]*(?P<number>\d\s?\w?)$', s)
if matches:
print(matches.groups())
else:
print s, "doesn't match"
输出:
('Somestreet', '1')
('Somestreet', '1')
('Somestreet', '1a')
('Somestreet', '1a')
('Somestreet', '1 a')
Some 1 street doesn't match
Some 1a street doesn't match
推荐阅读
- architecture - 用于确定服务价格的基于规则的引擎。建议?
- itext - 目前遇到一个HTML大文件转pdf的问题
- java - 如何以管理员权限运行命令?
- c# - API 控制器实现了 2 个具有不同 URI 的 POST 方法,对一个 POST 的调用未正确路由
- c# - SqlCommand.ExecuteReaderAsync 在存储过程中的第一个 SELECT 语句后停止触发 InfoMessage 事件
- go - 在太阳能上使用 gcc 9.1.0 的未定义 C 类型“int”
- javascript - 使用 jQuery 进行用户注册表单验证
- php - 带有活动链接的 PHP 下拉搜索栏
- java - 创建名为“entityManagerFactory”的 bean 时出错,由 mappedBy 引用未知的目标实体属性引起
- mysql - Mysql:具有最小值的行并根据大小写优先级条件