2017-05-24 16 views
1

引用符で囲まれた値を含む文字列を解析しようとしています。ここで私はこれまで持っているものである:すべて抽出されたトークンがあることをPyParsingのQuotedStringの使い方は?

'com.sec.android.app.camera.shootingmode.dual' 
'6' 
'1.003' 
'5.0.1-1624448' 

を印刷し

from pyparsing import Word, Literal, printables 

package_line = "package: name='com.sec.android.app.camera.shootingmode.dual' versionCode='6' versionName='1.003' platformBuildVersionName='5.0.1-1624448'" 

package_name = Word(printables)("name") 
versionCode = Word(printables)("versionCode") 
versionName = Word(printables)("versionName") 
platformBuildVersionName = Word(printables)("platformBuildVersionName") 


expression = Literal("package:") + "name=" + package_name + "versionCode=" + versionCode \ 
       + "versionName=" + versionName + "platformBuildVersionName=" + platformBuildVersionName 

tokens = expression.parseString(package_line) 

print tokens['name'] 
print tokens['versionCode'] 
print tokens['versionName'] 
print tokens['platformBuildVersionName'] 

注は、単一引用符で含まれています。これらを削除したいと思います。QuotedStringオブジェクトはこの目的のために用意されているようです。しかし、このスニペットを使用するには難しいです。QuotedStrings;特に、そのコンストラクタはprintablesと思われません。

一重引用符を削除するにはどうすればよいですか?以下で式を置き換える

答えて

0

package_name = QuotedString(quoteChar="'")("name") 
versionCode = QuotedString(quoteChar="'")("versionCode") 
versionName = QuotedString(quoteChar="'")("versionName") 
platformBuildVersionName = QuotedString(quoteChar="'")("platformBuildVersionName") 

が動作しているようです。今、このスクリプトは、引用符なしで出力

com.sec.android.app.camera.shootingmode.dual 
6 
1.003 
5.0.1-1624448 

を印刷します。

+1

はい、 'QuotedString'のコンストラクタは、文字列の内容ではなく、開始と終了の区切り文字として使用する文字を受け取ります。 – PaulMcG

関連する問題