我正在尝试从字符串中获取数字,然后删除该数字。例如,我将有一个像 '42Xmessage' 这样的字符串,其中 42 是我想要的数字(它可以是任意位数),它以 X 结尾。
如何获取变量中的数字,然后在另一个变量中获取消息部分(没有数字和 X)?
使用partition
:
>>> s = '42Xmessage'
>>> s.partition('X')
('42', 'X', 'message')
>>> s.partition('X')[0]
'42'
使用正则表达式:
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 之后的任何字符串。
你试过 re.sub 吗?
import re
re.sub('\d+X(.*)','\g<1>','42Xmesssage')
第一个参数是一个正则表达式,它捕获“后跟 X 的数字序列”之后的所有内容。您正在用 (.*) 捕获的字符串替换字符串,该字符串使用 '\g<1>'.* 指定