Python 将列表中除元素外的所有文本小写
我有这样一段文字:Python 将列表中除元素外的所有文本小写,python,regex,Python,Regex,我有这样一段文字:s=“我从2014年开始注册一门课程,是哲学硕士。我非常喜欢它。” 还有一个单词列表list=[“MPhil”,“MuCH”] 我正在寻找一个正则表达式代码,它能够将除列表元素之外的所有文本小写 我找到了这个正则表达式解决方案,它可以将所有字符(除了'之间的单词)小写: s=re.sub(r”\b(?只需查看您匹配的单词是否在要保持原样的单词集中: import re words_to_keep = {"MPhil", "MuCH"}
s=“我从2014年开始注册一门课程,是哲学硕士。我非常喜欢它。”
还有一个单词列表list=[“MPhil”,“MuCH”]
我正在寻找一个正则表达式代码,它能够将除列表元素之外的所有文本小写
我找到了这个正则表达式解决方案,它可以将所有字符(除了'
之间的单词)小写:
s=re.sub(r”\b(?只需查看您匹配的单词是否在要保持原样的单词集中:
import re
words_to_keep = {"MPhil", "MuCH"}
def replace_if_not_in_keeplist(match):
word = match.group()
if word in words_to_keep:
return word
return word.lower()
s = "I am Enrolled in a course, MPhil since 2014. I LOVE this SO MuCH."
s2 = re.sub(r"\w+", replace_if_not_in_keeplist, s)
print(s)
print(s2)
输出
I am Enrolled in a course, MPhil since 2014. I LOVE this SO MuCH.
i am enrolled in a course, MPhil since 2014. i love this so MuCH.
“我试图拆分文本并检查它是否来自列表,但我发现它并不实用。”-为什么不呢?这似乎是我最直接的解决方案。你需要检查”
吗?试试re.sub(fr”\b(?)(?:{'|'。join(word|list)})\b)\w+\b),lambda m:m.group().lower(),s)
@Tomalak,因为我有一个很长的文本,而且当我拆分时,我会得到一些单词,其中有一些点和comma@WiktorStribiżew no the'只是我正在寻找的一种解决方案,我想降低所有文本,除了带有正则表达式的列表中的某些特定单词…所以?使用.upper()时,逗号和点不会改变
或.lower()
。正在工作,非常感谢