在 Python 中保存 re.sub 中的撇号

Saving apostrophes in re.sub in Python

我只想在 Python 中使用 re.sub 命令保存普通字母和撇号,但是现在我的代码删除了撇号,所以 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(" ")

密码

re.sub('[^a-z ]', '', line)

正在获取所有不是 (^) 小写 a-z 或 space 的字符,并删除它们(通过将它们替换为 '')

您想将撇号添加到保留的字符列表中。为此,您可以 转义 正则表达式中的 single-quote/apostrophe 字符:

re.sub('[^a-z \']', '', line)

或在正则表达式的字符串中使用双引号:

re.sub("[^a-z ']", '', line)

单独评论

顺便说一句,用变量填充字符串的现代方法是使用 f 字符串 (documentation)。而不是

"songs/"+artist+"/"+album+"/"+song

你可以使用

f"songs/{artist}/{album}/{song}"