在python中,
我有像
这样的字符串"dsafsadf_afasa_2.2.14_43.33_dsfd"
我需要得到
"2.2.14_43.33"
我该怎么做?
答案 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)
参见演示。