Удалить нестроковые символы — Python

Вход - "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

По каким критериям вы хотите удалить эти конкретные части?

khelwood 15.05.2022 15:22

Почему один - является «строковым символом», а другой нет?

jonrsharpe 15.05.2022 15:47
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
2
46
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы можете использовать строковую функцию .isalpha, которая возвращает true, если укус представляет собой буквенную строку.

text = "space-service-1.1.309.02070980"
s = "".join(word for word in text if word.isalpha())
print(s)

Это возвращает «космический сервис», т. Е. Дефис удаляется.

Lancelot du Lac 15.05.2022 15:33

Это будет работать для данных, показанных в вопросе, но может не быть общим решением:

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"

он должен работать на любом языке и конвертироваться в однострочный

Другие вопросы по теме