如何使用PyParsing的QuotedString?

时间:2017-05-24 11:29:37

标签: python pyparsing

我正在尝试解析包含多个引用值的字符串。以下是我到目前为止的情况:

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']

打印

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

请注意,所有提取的标记都包含在单引号内。我想删除这些,似乎QuotedString对象就是为了这个目的。但是,我很难调整此代码段以使用QuotedStrings;特别是,他们的构造函数似乎没有printables

我怎样才能删除单引号?

1 个答案:

答案 0 :(得分: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

没有引号。