3
我有令牌的這樣的序列:檢測可變型在pyparsing
TokenName(alphanum) value(printable) value(printable, optional) value(printable, optional) Literal(';')
通過例如:
Token1 "stringValue with escaped data eg: \" in it";
Token2 12;
Token3 0xaaaa; // and hex string indicated by 0x
Token4 "value1" 2 0xbbcc;
結果餘除了被:
[
['Token1', 'stringValue with escaped data eg: " in it'],
['Token2', 12],
['Token3', '0xaaaa'],
['Token4', ['value1', 2, '0xbbcc']],
]
現在我的東西像這樣:
import pyparsing as p
non_semi = ''.join(c for c in p.printables if c != ';')
semi = p.Literal(';').suppress()
single_value = p.Word(non_semi) + semi
multi_value = p.Group(
p.Word(non_semi) +
p.Word(non_semi) +
p.Optional(p.Word(non_semi)) +
semi
)
value = single_value | multi_value
assignment = p.Group(p.Word(p.alphanum) + value)
bnf = p.Group(p.OneOrMore(assignment))
bnf.ignore(p.cStyleComment)
但是這段代碼,並沒有將12
改成int(12)
,還得到"
字符串,可以pyparsing處理這個值的轉換嗎?
編輯
好吧,我知道如何處理字符串:QuotedString有很大幫助