我正在尝试学习 pyparsing。这听起来很有希望,并且用于文本处理会很有趣。无论如何,这是我的问题:
我有一个课程名称列表。例如,
courselist = ["Project Based CALC",
"CALCULUS I",
"Calculus II",
"Intermediate MICRO",
"Intermediate CALCULUS advance",
"UNIVERSITY PHYSICS"]
我想从上面的列表中提取与微积分有关的课程。这些课程要么包含完整的单词 CALCULUS,要么具有缩写 CALC。首先,假设这些词只以大写形式出现(在上面的例子中有一个小写的;让我们暂时忽略它)。
我写了以下代码:
import pyparsing as pp
calc = pp.Literal("CALC")
for entry in courselist:
if len(calc.searchString(entry)) >= 1:
print entry
else:
pass
我的第一个问题是,是否有更好的方法使用 pyparsing 来做到这一点?
现在上面错过了Calculus II
。我知道我可以通过定义calc
为:
calc = pp.Literal("CALC") | pp.Literal("Calc")
但这会错过cAlc
。有没有办法指定语法,使 CALC 中的所有小写和大写字母都匹配。
谢谢您的帮助。