识别组后找到一个字符串

时间:2019-01-18 02:42:14

标签: python regex pandas

我正在使用熊猫从csv文件中遍历几千行真正混乱的数据。我正在遍历数据框列之一,该列通常包含相当短的字符串,这些字符串是完全不同的,级联的客户信息(名称,位置,客户编号,电话号码等)。

客户号码和电话号码之间并没有很多可识别的区别,尽管df列中的大多数行在电话号码的字符串文本中都包含TEL标识符,如下所示(其中0123456是客户号码,而55555 5555是TEL):

JERRY 0123456 TEL:55555 5555所在地城市

我可以从TEL:指示符后面的数字中清除空格,但是似乎无法制定仅提取TEL:指示符后面的文本的正则表达式。在我的新df [“ TEL”]栏中,理想的输出应该是555555555。

到目前为止,我的正则表达式是(请注意,某些电话号码用于处理国际呼叫者的长度是不同的,其中一些包含国家/地区代码,而某些则没有):

re.match(r'(TEL)?:??[0-9] {9-12}')。group()

但是,上面的正则表达式仍然提取我要匹配的字符串的TEL片段。如何解决此错误?

2 个答案:

答案 0 :(得分:0)

您可以在后面使用正面的表情。

(?<=TEL: )[0-9 ]{9,12}

通过这种方式,它会检查字符串“ TEL:”是否在数字后面。

但是,最好遍历字符串,当遇到字符串TEL时,跳过两个字符并获取以下数字。

答案 1 :(得分:0)

re.match(r'(?:TEL)?:? ?([0-9 ]{9-12})').group(1)

(?:...)使其成为非捕获组 ([0-9 ]{9-12})将该部分捕获为组(1)