1
私はpyparsingが初めてです。私はテキストを解析しようとしていますが、実際にどのように動作しているのか理解できません。構文解析テキストusng結合が結果を返していません
from pyparsing import *
number = Word(nums)
yearRange = Combine(number+"-"+number)
copyright = Literal("Copyright (C)")+yearRange+Literal("CA. All Rights Reserved.")
copyrightCombine = Combine(copyright)
date = Combine(Word(nums)+"/"+Word(nums)+"/"+Word(nums))
time = Combine(Word(nums)+":"+Word(nums)+":"+Word(nums))
dateTime = Combine(date+time)
pageNumber = Suppress(Literal("PAGE"))+number
pageLine = Word(nums)+"Copyright (C) 1986-2014 CA. All Rights Reserved."+Combine(Word(nums)+"/"+Word(nums)+"/"+Word(nums))+Combine(Word(nums)+":"+Word(nums)+":"+Word(nums))+pageNumber
pageLine2 = number+copyright+dateTime+pageNumber
pageLine3 = Word(nums)+copyright+Combine(Word(nums)+"/"+Word(nums)+"/"+Word(nums))+Combine(Word(nums)+":"+Word(nums)+":"+Word(nums))+pageNumber
test = "1 Copyright (C) 1986-2014 CA. All Rights Reserved. 07/05/17 10:58:56 PAGE 1241"
print(pageLine.searchString(test))
print(copyright.searchString(test))
print(copyrightCombine.searchString(test))
print(pageLine2.searchString(test))
print(pageLine3.searchString(test))
出力:
[['1', 'Copyright (C) 1986-2014 CA. All Rights Reserved.', '07/05/17', '10:58:56', '1241']]
[['Copyright (C)', '1986-2014', 'CA. All Rights Reserved.']]
[]
[]
[['1', 'Copyright (C)', '1986-2014', 'CA. All Rights Reserved.', '07/05/17', '10:58:56', '1241']]
私はいくつかの理由でパーサcopyrightCombineはどんな結果を返すされていないためpageLine2として定義パーサーを使用します。私がCombine()を使用しようとしているときのように、構文解析によって一致が返されないようなものがあります。
(コンストラクタで偽=隣接指定することで上書き することができます)間に空白はありませんし、一致するすべての トークンが隣接することを期待もされ、https://pythonhosted.org/pyparsingオンラインでドキュメントをチェックしてください1,000行以上のインラインサンプルが含まれています(あるいはPythonの 'help'コマンドを' help(Combine) 'のように使用することもできます)。 – PaulMcG