Удалить некоторые точки в начале строки в python

#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.