2012-05-10 45 views
5

Tôi hiện đang cố gắng để có được kết quả từ việc viết pypars như một danh sách thuần túy để tôi có thể làm phẳng nó. Tôi đã đọc trong tài liệu hướng dẫn rằngLấy danh sách thuần túy ra khỏi 'pyparsing.ParseResults'

ParseResults cũng có thể được chuyển đổi thành danh sách chuỗi thông thường bằng cách gọi asList(). Lưu ý rằng điều này sẽ loại bỏ kết quả của bất kỳ tên trường nào đã được xác định cho bất kỳ phần tử phân tích cú pháp được nhúng nào. (Các module pprint đặc biệt giỏi trong việc in ra các nội dung lồng nhau do asList().)

Vì vậy, tôi đã cố gắng xác định một setParseAction nơi tôi làm việc trên ParseResult

những gì tôi nhận được là:

>>> print type(tokens.args[0]) 
<class 'pyparsing.ParseResults'> 
>>> print type(tokens.args[0].asList) 
<type 'instancemethod'> 

Nhưng tôi đã mong đợi/cần người cuối cùng là danh sách loại. Tôi phải thiếu một cái gì đó quan trọng khi sử dụng asList() ở đây.

Dietmar

PS: Dưới đây là một MTC về những gì các thẻ thực sự trông giống như:

>>> print tokens.args[0] 
['foo1', ['xxx'], ',', 'graphics={', 'bar1', ['xxx,yyy'], ',', 'bar2', 
['xxx,yyy'], ',', 'bar3', ['xxx,yyy,', 'zzz=baz', ['xxx,yyy']], '}'] 

Trả lời

7

tokens.args[0].asList là một hàm. tokens.args[0].asList() là cuộc gọi đến hàm đó (không có đối số nào ngoài đối số self). Có vẻ như bạn muốn biết loại biểu thức thứ hai.

4

Bạn có thể thử

print type(tokens.args[0].asList()) 
Các vấn đề liên quan