如何从字符串中捕获值然后将其删除?

时间:2013-07-13 23:10:05

标签: python regex string

我正在尝试从字符串中获取数字,然后删除该数字。例如,我将有一个像'42Xmessage'这样的字符串,其中42是我想要的数字(它可以是任意数字的数字),它由X终止。

如何获取变量中的数字,然后在另一个变量中获取消息部分(没有数字和X)?

4 个答案:

答案 0 :(得分:5)

你可以做到

'42Xmessage'.split('X')

返回

['42', 'message']

这不是很一般,但您可以从stringre模块文档中获取更多信息。

答案 1 :(得分:2)

使用partition

>>> s = '42Xmessage'
>>> s.partition('X')
('42', 'X', 'message')
>>> s.partition('X')[0]
'42'

答案 2 :(得分:1)

使用正则表达式:

import re
s = '42Xmessage'
pattern = re.compile("([0-9]+)X")
print pattern.findall(s)[0]

对于这部分问题:

“如何在变量中获取数字,然后在另一个变量中获取消息部分(没有数字和X)?”

import re
s = '42Xmessage'
pattern = re.compile("([0-9]+)X([a-z]+)", re.IGNORECASE)
num, msg = pattern.findall(s)[0][:2]

对于模式,[0-9]是从0到9设置的数字。([0-9]+)X找到任意数字后跟X。同样,X([a-z]+),X之后的任何字符串。

答案 3 :(得分:0)

你试过re.sub吗?

import re
re.sub('\d+X(.*)','\g<1>','42Xmesssage')

第一个参数是一个正则表达式,它捕获“数字序列后跟一个X”后面的所有内容。您正在用(。*)使用'\ g&lt; 1&gt;'指定的内容替换字符串。*