只删除字符串中的字母字符

时间:2015-07-03 09:10:48

标签: python regex

在python中,

我有像

这样的字符串
"dsafsadf_afasa_2.2.14_43.33_dsfd"

我需要得到

"2.2.14_43.33"

我该怎么做?

3 个答案:

答案 0 :(得分:0)

如果您只想删除字母,可以使用str.translate:

s = "dsafsadf_afasa_2.2.14_43.33_dsfd"


from string import ascii_letters
print(s.translate(None,ascii_letters))

输出:

__2.2.14_43.33_

对于python3:

from string import ascii_letters
print(s.translate({ord(ch):"" for ch in ascii_letters}))

如果你真的想从最终使用条中删除下划线:

s = "dsafsadf_afasa_2.2.14_43.33_dsfd"

from string import ascii_letters

print(s.translate(None,ascii_letters).strip("_"))

输出:

2.2.14_43.33

答案 1 :(得分:0)

似乎您尝试删除所有字母和所有下划线,除非数字之间存在下划线,。

>>> s = "dsafsadf_afasa_2.2.14_43.33_dsfd"
>>> re.sub(r'[a-z]|(?<=\D)_(?=\d)|(?<=\d)_(?=\D)|(?<=\D)_(?=\D)|^_+|_+$', '', s)
'2.2.14_43.33'

答案 2 :(得分:0)

您只需执行re.findall

import re
p = re.compile(r'\d+(?:[\W_]\d+)*')
test_str = "dsafsadf_afasa_2.2.14_43.33_dsfd"

re.findall(p, test_str)

参见演示。

https://regex101.com/r/hF1wE3/2