как удалить все после определенного символа
допустим у меня есть ссылка https://cdn.discordapp.com/avatars/646692326990807066/99a6fd86126fa657a0949fe1b2b42185.webp?size=1024
мне надо удалить все после последней точки чтобы осталось только
https://cdn.discordapp.com/avatars/646692326990807066/99a6fd86126fa657a0949fe1b2b42185
я уже пробовал свой код, но он не работает
url = str(userID.avatar_url)
counter = 0
for i in url:
if i == '.':
counter += 1
counter -= 1
print(counter)
url.split(".", '')[counter]
Ответы (4 шт):
url = url[:url.rfind('.')]
Но это будет работать корректно только если точка точно есть. Иначе удалит точку из доменного имени.
url = 'https://cdn.discordapp.com/avatars/646692326990807066/99a6fd86126fa657a0949fe1b2b42185.webp?size=1024'
url, *_ = url.rpartition('.')
import re
url = 'https://cdn.discordapp.com/avatars/646692326990807066/99a6fd86126fa657a0949fe1b2b42185.webp?size=1024'
url = re.sub(r'\.[^./]+?$', '', url)
url = re.match('(https?://.+/.*?)([.?]?$)',url).group(1)
.+ - жадный + до последнего слеша.
.*? - ленивая * до точки или вопроса или конца строки
проблемы с точкой в домене нет
Вы можете использовать метод rfind для поиска последней точки и срезы (slicing) для удаления части строки после нее. Вот пример кода:
link = "https://cdn.discordapp.com/avatars/646692326990807066/99a6fd86126fa657a0949fe1b2b42185.webp?size=1024"
last_dot_index = link.rfind(".")
if last_dot_index != -1: # если точка найдена
link = link[:last_dot_index] # обрезаем строку до последней точки
print(link) # выводим обновленную ссылку