Не работает простой код на Python
import re
line = 'C:\Users\Persh\Pycharmprojects\Aiogram-Bot-Template\А Как Папу Зовут (6 Секундное Видео Vine Вайн Coub).Mp4'
print(re.sub("C:\Users\Persh\Pycharmprojects\Aiogram-Bot-Template\", line))
Почему у меня это не работает? Мне выдает: SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
Я пробовал сделать следующим образом:
import re
line = 'C:\*Users\Persh\Pycharmprojects\Aiogram-Bot-Template\А Как Папу Зовут (6 Секундное Видео Vine Вайн Coub).Mp4'
print(re.sub('C:\*Users\Persh\Pycharmprojects\Aiogram-Bot-Template\', line))
Но теперь у меня почему-то всё превращается в строку и выдает ошибку: SyntaxError: EOL while scanning string literal
Не понимаю в чем проблема и что делать,мне нужно убрать определенные символы из строки а конкретнее мне нужно убрать из строки путь к файлу. Буду благодарен за помощь
Ответы (1 шт):
Символ \ в строках вызывает экранирование, например два символа \n становятся одним и этот новый символ вызывает перевод на новую строку.
А \U является префиксом к описанию юникодного символа формат \UXXXXXXXX:
line = 'C:\Users\
# ^^^^^
Решением будет использовать raw-строки, где экранирование не вызывается:
line = r'C:\Users\Persh\Pycharmprojects\Aiogram-Bot-Template\А Как Папу Зовут (6 Секундное Видео Vine Вайн Coub).Mp4'
или экранировать сам \:
line = 'C:\\Users\\Persh\\Pycharmprojects\\Aiogram-Bot-Template\\А Как Папу Зовут (6 Секундное Видео Vine Вайн Coub).Mp4'