2017-05-24 6 views
1

인용 된 여러 값이 포함 된 문자열을 구문 분석하려고합니다. 여기에 지금까지 무엇을 가지고 :PyParsing의 QuotedString을 사용하는 방법?

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을 사용하지 않는 것 같습니다.

어떻게하면 작은 따옴표를 제거 할 수 있습니까?

답변

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