如何从正则表达式中提取值的范围

2024-06-11 16:11:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从pandas系列中提取所有字母表(A-Za-z)以及任何以9开头的字符串,例如9mobile、9link等

1000                          pos ba ganiyu fatai og ogng 9moble
1001                          99 ct justrite limited(ota) la lang
1002                          9link qt pymt airtime recharge 
1003                          qt pymt airtime recharge 56

9只能在字符串开头出现零次或一次

我提出了这个regrex模式[^A-Za-z\(A9?)],但它似乎无法提取我真正想要的东西

我也试过:

text = t.apply(lambda x: re.sub('[^A-Za-z\A9.?]+' , ' ', str(x)))

这导致了一个错误

我的预期产出是:

    1000                          pos ba ganiyu fatai og ogng 9moble
    1001                          ct justrite limited(ota) la lang
    1002                          9link qt pymt airtime recharge 
    1003                          qt pymt airtime recharge 

Tags: 字符串posqtogctlimitedbaza
1条回答
网友
1楼 · 发布于 2024-06-11 16:11:53

如果我理解正确,您希望提取任何字符串以及任何第一个字符为9的字符串。在这种情况下,请尝试以下正则表达式:

9{0,1}[a-zA-Z]+

所以它应该是这样的:

text = t.apply(lambda x: re.sub('9{0,1}[a-zA-Z]+' , ' ', str(x)))

编辑:

要仅从列表中删除数字,请使用以下命令:

\d+([^\w]|$)

所以它的作用是,它匹配任何不后跟字符或后跟字符串结尾的数字,所以它不会匹配像“9link”这样的字符串

相关问题 更多 >