如何断言 pyparsing.ParseResults 内容?

How to assert a pyparsing.ParseResults content?

我想在 pyparsing.ParseResults class 及其内容上使用 Python assert 进行验证。

此处给出了 Python pyparsing 代码的工作片段:

import pyparsing as pp
first = pp.Word(pp.srange('[a-zA-Z]'), exact=1)
rest = pp.Optional(pp.Word(pp.srange('[_0-9a-zA-Zz]')))
keyName = pp.Combine(first + rest)

一个简单的打印输出是(并且会产生误导):

print keyName.parseString("Abc_de")
['Abc_de']
#
print ['Abc_de']
['Abc_de']

当然,下面的断言失败了:

# Unit test that is faulty
assert keyName.parseString("Abc_de") == ['Abc_de']

单元测试失败...因为 ['Abc_de'] 的类型是 listkeyName.parseString("Abc_de")) 的类型是 <class 'pyparsing.ParseResults'>.

我应该调用什么方法才能轻松做出断言?

parseString返回的结果使用asList方法。

import pyparsing as pp
first = pp.Word(pp.srange('[a-zA-Z]'), exact=1)
rest = pp.Optional(pp.Word(pp.srange('[_0-9a-zA-Zz]')))
keyName = pp.Combine(first + rest)

assert keyName.parseString('Abc_de').asList() == ['Abc_de']