2017-10-17 54 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

我發現我可以使用QuotedString對象,它的quoteChar設置爲"。此對象自動刪除引號:

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