Как использовать QuotedString 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 ответ
Решение
Замена выражений следующим:
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
без кавычек.