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

2024-09-20 03:44:11 发布

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

在python中

我有一根绳子

"dsafsadf_afasa_2.2.14_43.33_dsfd"

我需要得到公正

"2.2.14_43.33"

我该怎么做?你知道吗


Tags: 绳子dsfddsafsadfafasa
3条回答

好像你要删除所有的字母和下划线,除非数字中间有底核,。你知道吗

>>> 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'

你可以简单地做一个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

你可以用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

相关问题 更多 >