Вход - "space-service-1.1.309.02070980"
Ожидаемый результат - space-service
Я пробовал re.sub , translate и т. д., но я ищу более простое решение с одним вкладышем. Является ли это возможным ?
import re
text = "space-service-1.1.309.02070980"
>>> output = re.sub(r'\d+', '', text)
>>> print(output)
from string import digits
text = "space-service-1.1.309.02070980"
res = text.translate (нет, цифры)
Версия Python - 3.6
Почему один - является «строковым символом», а другой нет?






Вы можете использовать строковую функцию .isalpha, которая возвращает true, если укус представляет собой буквенную строку.
text = "space-service-1.1.309.02070980"
s = "".join(word for word in text if word.isalpha())
print(s)
Это возвращает «космический сервис», т. Е. Дефис удаляется.
Это будет работать для данных, показанных в вопросе, но может не быть общим решением:
text = "space-service-1.1.309.02070980"
print(text[:text.rfind('-')])
Выход:
space-service
def get_clean(text):
result = "".join( [ "".join(pair) for pair in regex.findall(r"(\p{L}+)([-]\p{L}+)?", text) ] )
return result
print( get_clean("space-service-1.1.309.02070980") )
print( get_clean("space-service-1.1.309.02070980/myfile-xyz") )
print( get_clean("hello") )
print( get_clean("hello-123") )
print( get_clean("hello-file123") )
"space-service"
"sace-servicemyfile-xyz"
"hello"
"hello"
"hello-file"
он должен работать на любом языке и конвертироваться в однострочный
По каким критериям вы хотите удалить эти конкретные части?