#python #string #re
#питон #строка #python-re
Вопрос:
Я хочу сохранить только обычные буквы и апострофы с помощью команды re.sub в Python, однако прямо сейчас мой код удаляет апострофы, поэтому don’t становится dont и т. Д. Могу ли я добавить «сохранить» апострофы в свою команду re.sub или мне нужно использовать какое-то другое решение?
Мой код прямо сейчас:
text = open("songs/" artist "/" album "/" song, "r", encoding="latin-1")
lines = text.readlines()
for line in lines:
line = line.lower()
line = re.sub('[^a-z ]', '', line)
words = line.split(" ")
Ответ №1:
Код
re.sub('[^a-z ]', '', line)
принимает все символы, которые не являются ( ^
) ни строчными a-z
, ни пробелом
, и удаляет их (заменяя их на ''
)
Вы хотите добавить апострофы в список сохраненных символов. Для этого вы можете либо экранировать символ одинарной кавычки / апострофа в вашем регулярном выражении:
re.sub('[^a-z ']', '', line)
или используйте двойные кавычки в строке для вашего регулярного выражения:
re.sub("[^a-z ']", '', line)
отдельный комментарий
Кстати, современный способ заполнения строки переменными — это f-строка (документация). Вместо
"songs/" artist "/" album "/" song
вы можете использовать
f"songs/{artist}/{album}/{song}"
Комментарии:
1. Потрясающе, спасибо Зеву, а также за дополнительный комментарий. Так выглядит более гладко.