#python #regex #string
#python #регулярное выражение #строка
Вопрос:
У меня есть несколько строк, которые начинаются с точек, и я хочу их удалить. Какой способ лучше всего. И если следующий символ не является «/», добавьте его. Я новичок в python, и я пытался сделать что-то подобное, чтобы стереть точки, но есть синтаксическая ошибка.
while (re.match(r'.*', url[0]).end()) = 0:
url = url[1:]
- …./xxx —> /xxx
- .xxx —> /xxx
- ..ab —> /ab
- /ab —> /ab
- ca —> /ca
Это то, что я пытаюсь сделать.
Комментарии:
1. Может быть, синтаксическая ошибка заключается в том, что вы используете
=
вместо==
для сравнения?2. Чтобы удалить точки с левого конца строки: new = old.lstrip(«.») должен творить чудеса.
Ответ №1:
Чтобы избавиться от точек:
mystr = '...../your_string'
mystr = '/' mystr.lstrip('./')
и результат должен быть:
/your_string
независимо от того, начинается ли она с точек или косых черт (все они будут заменены одной косой чертой).
Ответ №2:
Попробуйте с:
badUrl = "..../xxx"
url = "/" badUrl.lstrip("./")
Это удалит все точки и косые черты из начала ваших строк, а затем мы добавим косую черту вручную.
Ответ №3:
Я бы рекомендовал url.lstrip(".")
удалить точки, затем
if not url[0] == '/':
url="/" url
чтобы добавить косую черту.
Комментарии:
1. Если строка может когда-либо заканчиваться точкой, это решение также удалит конечную точку.
2. Вероятно, это должно быть
url.lstrip('.')
, если есть вероятность, что могут быть конечные точки, которые не следует удалять.3. @MichaelCOconner Спасибо, что заметили опечатку. исправлено.
Ответ №4:
Кто-нибудь рассматривал возможность использования lstrip('./')
?
Хорошо, lstrip
формально не отвечает на его вопрос, как было задано (поскольку он удалит все точки и косые черты, тогда как смешения точек и косых черт следует игнорировать, а множественные косые черты должны быть сохранены — согласно моему буквальному прочтению сообщения).
Для этого вам придется использовать решение @ewok.