2017-10-17 13 views
0

쉼표로 구분 된 큰 따옴표로 묶은 문자열 인 문자열을 구문 분석하고 싶습니다. 처음에 (from pyparsing import * 후) 나는 노력이 :PyParsing에서 구문 분석 결과에서 모든 따옴표를 제거하십시오.

In [36]: expression = delimitedList(dblQuotedString, delim=",") 

In [37]: expression.parseString('"foo","bar"') 
Out[37]: (['"foo"', '"bar"'], {}) 

이 예상되는 일치를 생성하지만, 따옴표를 제거하지 않습니다. 그래서 나는 addParseAction(removeQuotes) 추가하는 시도 :

In [34]: expression = delimitedList(dblQuotedString, delim=",").addParseAction(r 
    ...: emoveQuotes) 

In [35]: expression.parseString('"foo","bar"') 
Out[35]: (['foo'], {}) 

이것은 'foo'에 따옴표를 제거하지만 지금은 'bar' 결과가 없습니다. 결과가 (['foo', 'bar'], {})이되도록 표현식을 어떻게 만들 수 있습니까?

답변

0

quoteChar"으로 설정된 QuotedString 개체를 사용할 수 있음을 발견했습니다.

In [40]: expression = delimitedList(QuotedString(quoteChar='"'), delim=',') 

In [41]: expression.parseString('"foo","bar"') 
Out[41]: (['foo', 'bar'], {}) 
+0

은'removeQuotes' 구문 분석 작업을 사용하는 올바른 방법은'dblQuotedString' 표현에 첨부하는 것입니다 아닌'delimitedList' : '표현 = delimitedList (dblQuotedString.addParseAction (이 객체는 자동으로 따옴표를 제거 removeQuotes), delim = ",")'그러나'QuotedString'을 사용하는 것은 똑같이 작동합니다. – PaulMcG