我如何将一个正则表达式模式与一个字符串进行比较?
示例:“街道A 2 B”
对于这种情况,我用途:
re.split("([0-9]+)", address)
但是,对于另一个案例“Street 23”,我使用
re.split("([0-9]+)", address)
我需要像这两个案例一样构建它,使它们能够相互对话。如果我输入“Street A 2 b”,我需要输出['Street A','2 b']如果我输入“Street 23”,我需要输出['Street','23']
我试着去做:
address = str(input('Enter the address: '))
if address != re.search(r"([0-9]+ [a-z]+)", address):
my_list = re.split("([0-9]+)", address)
print(my_list)
else:
my_list = re.split("([0-9]+ [a-z]+)", address)
print(my_list)
但它不起作用
我需要该程序识别每一个两种情况下,并正确输出.
3条答案
按热度按时间pgvzfuti1#
在模式中使用lookahead可以得到你想要的结果,这将使用一个空格后面跟一个数字作为分隔符。
5vf7fwbs2#
你可以在第一个空格+数字上分割,但是只能用
maxsplit=1
分割一次。但是这会给你留下3个元素列表,所以你必须把结尾连接起来。不确定是否有可能不使用连接。E:从Barmar的答案中窃取了前瞻模式。仅供参考:
input
应该已经返回str
,因此不需要转换它。ohtdti5x3#
您可以使用regex功能:
输出
“甲街”、“二乙街”
注解
模式
\D+
搜索所有连续的非数字字符。匹配模式使用分组(使用括号)。因此,第一部分(street)存储在match[1]
中,其余部分(number ...)存储在match[2]
中。要删除不需要的空格,请使用
strip()
。