1

私は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のすべての小文字と大文字が一致するように文法を指定する方法はありますか?

ご協力ありがとうございました。

4

1 に答える 1

2
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
于 2011-02-25T02:31:29.663 に答える