与えられた例をエミュレートしようとしても、このスクリプトでsetResultsNameを機能させるのに問題があります。私はドキュメントを調べ、著者の本を調べ、フォーラムの例を見てきました。私はいくつかのバリエーションを試しましたが、率直に言って少し困惑していますが、これはあまり経験がないので、間違っていることがあると確信しています。
from pyparsing import *
lineId = Word(nums)
topicString = Word(alphanums+'-'+' '+"'")
expr = Forward()
full_entry = Group(lineId('responsenumber') + expr)
def new_line():
return '\n' + lineId.responsenumber # <-- here is the line that causes the error
expr << topicString + Optional(nestedExpr(content=delimitedList(expr))) + Optional((Literal(';').setParseAction(new_line) + expr))
for line in input:
inputParseResults = delimitedList(full_entry).parseString(line).asList()
print inputParseResults
コードのこの部分が行おうとしているのは、次の入力を取得することです。
1768 dummy data; things
27483 other things
そして、セミコロンで行を分割し、lineIdを再度アタッチしてから、次の行に表示されているように再関連付けします。
1768 dummy data
1768 things
27483 other things
ここに示していない出力のフォーマットを処理する他のコードがあります。私の主な障害は改行+lineIdを取得することであり、setResultsNameを機能させることができれば、設定される可能性があると思います。