如何通过python正则表达式排除某些字符来提取

时间:2012-11-20 06:10:53

标签: python regex

我一直在使用python regex来提取地址模式。 例如,我有一个添加列表,如下所示:

12buixuongtrach 
34btrannhatduat 
25bachmai 
78bhoangquocviet

我想改进这些地址:

12 buixuongtrach
34b trannhatduat 
23 bachmai 
78b hoangquocviet

任何人都可以帮助一些提示代码吗?

非常感谢

2 个答案:

答案 0 :(得分:3)

你可以使用一个非常简单的正则表达式来将数字从字母中分开,但就像人们在评论中所说的那样,没有办法知道这些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']

正则表达式只是抓取字符串开头的一个或多个数字并将它们放入组\1,然后将其余字符串放入组\2

答案 1 :(得分:0)

感谢大家的回复。我终于找到了一个解决方案。 我使用下面的模式,它就像一个魅力:)

'[a-zA-Z]+|[\/0-9abcd]+(?!a|u|c|h|o|e)'