我一直在使用 python 正则表达式来提取地址模式。例如,我有一个添加列表,如下所示:
12buixuongtrach
34btrannhatduat
25bachmai
78bhoangquocviet
我想细化这样的地址:
12 buixuongtrach
34b trannhatduat
23 bachmai
78b hoangquocviet
任何人请帮助一些提示代码?
非常感谢
您可以使用一个非常简单的正则表达式将数字与字母分开,但就像人们在评论中所说的那样,没有办法知道这些 b 何时应该是数字的一部分以及它们何时是文本的一部分。
import re
text = """12buixuongtrach
34btrannhatduat
25bachmai
78bhoangquocviet"""
unmatched = text.split()
matched = [re.sub('(\d+)(.*)', '\\1 \\2', s) for s in unmatched]
这使:
>>> matched
['12 buixuongtrach', '34 btrannhatduat', '25 bachmai', '78 bhoangquocviet']
正则表达式只是在字符串的开头抓取一个或多个数字并将它们放入 group\1
中,然后将字符串的其余部分放入 group\2
中。
谢谢大家的回复。我终于找到了解决方法。我使用了如下模式,它就像一个魅力:)
'[a-zA-Z]+|[\/0-9abcd]+(?!a|u|c|h|o|e)'