我正在使用包的findall()函数进行简单的正则表达式字符串搜索。 在使用负面场景进行我的单元测试时,我发现一些特殊字符返回错误代码,这些代码在#符号后面的注释中给出。 我的问题是为什么这些字符返回错误代码,如何用带有转义序列的搜索字符串替换它们? 请告诉我替换转义序列的代码:
import re
search="database"
search="c++" # error: multiple repeat
search="c\+\+" #working
search="c+" #working
search="c#" #working
search="j!!" #working
search="x$$" #working
search="++j" #error: nothing to repeat
search="~~c" #working
search="c@@" #working
search="j##" #working
search="c%%" #working
search="j&&" #working
search="j**" #error: multiple repeat
search="j*" #* is wild card
search="c(github)" #working
search="c--" #working
search="c==" #working
document="i did c++ programming. I am a c++ programming enthusiast. I love
working on c++ algirithms. I have experience in 3.5 years of c++ programming
skills "
n=len(re.findall(search,document))
print("Keyword Frequency: ",search ," Count: ",n)
为了便于理解,针对每个搜索词给出了代码print()的最后一个语句的输出。 解决方案我需要具备的能力:
识别特殊字符序列。 (例如,它可能是:++或+++或+++++或" ++ j"或" j **" etc
在识别出特殊字符序列后,解决方案代码应该用" ++"替换特殊字符。或" +++"或" +++++"或者" ++ j"或" j **"
创建新的搜索字符串
提前感谢您的解决方案。
答案 0 :(得分:1)
正则表达式模块附带了一个函数:re.escape()
。所以:
import re
search = "c++"
# ...
document = """i did c++ programming. I am a c++ programming enthusiast. I love
working on c++ algirithms. I have experience in 3.5 years of c++ programming
skills """
n = len(re.findall(re.escape(search), document))
print("Keyword Frequency: ", search, " Count: ", n)
应该做得很好......现在,为什么你使用正则表达式而不是str.count()
这么简单的任务是你需要自己回答的问题。