我想从这个字符串中删除额外的r和n。我试过正则表达式。不确定正则表达式或其他方法是否有帮助
这是我正在尝试使用的代码
text = "r n r n r nFamily Medical History new r n r n r r r Roger nRobert n nDawson n49 nyears old , right shoulder"
regex_pattern = re.compile(r'\s[rn]\s')
matches = regex_pattern.findall(text)
for match in matches:
text = text.replace(match," ")
print(text)
电流输出:
r nFamily Medical History new Roger nRobert nDawson n49 nyears old , right shoulder
我们仍然看到许多r n。还想知道如何从n49、Nyear中删除“n”,并从Dawson中删除第一个“n”,而不删除最后一个“n”
预期产出:
Family Medical History new Roger Robert Dawson 49 years old , right shoulder
试试这样的
\b[rn](?=[A-Z0-9 ])
\b
查找任何工作边界(字符串的开头、空格、换行符)[rn]
查找“r”或“n”(?=[A-Z0-9 ])
查找任何大写字母、空格或数字,但不在匹配中包含它们签出https://regex101.com/r/hSmYyi/1用于处理正则表达式和测试
我建议在这里使用NLP方法,因为我不知道正则表达式如何区分
nyears
(错误拼写)和new
(正确拼写)首先,删除所有独立的
r
/n
和那些粘在大写单词和数字上的,然后拆分字符串并用拼写检查器检查以n
或r
开头的每个单词。如果word[1:]
正确而word
不正确,则可以删除第一个n
。如果两者都不正确,我认为回到word
是安全的例如,要运行拼写检查,可以使用^{}
下面是一个Python代码演示:
如果紧跟在大写字母、数字或字符串末尾,则
re.sub(r'\b[rn](?=[A-Z0-9\s]|$)', '', s)
部分删除单词开头的r
和n
然后,
for w in s.split():
迭代句子中的单词,并仅在单词以n
或r
开头且拼写错误为w[1:]
时替换该单词免责声明:
TextBlob
用作示例。您可以自由使用任何其他拼写检查库TextBlob spellchecking“基于Peter Norvig在模式库中实现的“如何编写拼写更正器”1。它的准确率约为70%”老派在这里
当然,你可以随意重构它
相关问题 更多 >
编程相关推荐