Сохранение апострофов в re.sub в Python

#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. Потрясающе, спасибо Зеву, а также за дополнительный комментарий. Так выглядит более гладко.