Python pyparsing:提取包含特定文本的字符串
我正在努力学习语法分析。这听起来很有希望,而且用于文本处理也很有趣。无论如何,我的问题是: 我有一份课程名称清单。比如说,Python pyparsing:提取包含特定文本的字符串,python,pyparsing,Python,Pyparsing,我正在努力学习语法分析。这听起来很有希望,而且用于文本处理也很有趣。无论如何,我的问题是: 我有一份课程名称清单。比如说, courselist = ["Project Based CALC", "CALCULUS I", "Calculus II", "Intermediate MICRO", "Intermediate CALCULUS advance", "UNIVERSITY P
courselist = ["Project Based CALC",
"CALCULUS I",
"Calculus II",
"Intermediate MICRO",
"Intermediate CALCULUS advance",
"UNIVERSITY PHYSICS"]
我想从上面的列表中提取与微积分有关的课程。这些课程要么有完整的单词演算,要么有缩写CALC。首先,假设这些单词只出现在大写字母中(在上面的例子中有一个字母是小写的;让我们暂时忽略它)
我编写了以下代码:
import pyparsing as pp
calc = pp.Literal("CALC")
for entry in courselist:
if len(calc.searchString(entry)) >= 1:
print entry
else:
pass
我的第一个问题是,是否有更好的方法使用pyparsing来实现这一点
现在,上面的代码忽略了演算II。我知道我可以通过将calc
定义为:
calc = pp.Literal("CALC") | pp.Literal("Calc")
但这将错过cAlc
。是否有办法指定语法,以便CALC中的所有小写和大写字母都匹配
谢谢你的帮助
calc = pp.CaselessLiteral('calc')
for entry in courselist:
if calc.searchString(entry, 1):
print entry
其效果类似于:
for entry in courselist:
if 'calc' in entry.lower():
print entry
伟大的感谢您的回答。您可以在pyparsing wiki(pyparsing.wikispaces.com)上找到大量文档/文章链接,SourceForge的源发行版中包含UML图、htmldoc和示例。你也可以花10美元从O'Reilly那里买到这本电子书。