2010-05-30 31 views
5

là gì sự khác biệt giữa:PyParsing: Combine() làm gì?

foo = TOKEN1 + TOKEN2 

foo = Combine(TOKEN1 + TOKEN2) 

Cảm ơn.

CẬP NHẬT: Dựa trên thử nghiệm của tôi, nó có vẻ như Combine() là dành cho thiết bị đầu cuối, nơi bạn đang cố gắng xây dựng một biểu thức để phù hợp trên, trong khi đồng bằng + là cho người không nhà ga. Nhưng tôi không chắc chắn.

Trả lời

13

Kết hợp có 2 tác dụng:

  • nó concatenates tất cả các thẻ vào một chuỗi duy nhất

  • nó đòi hỏi các thẻ phù hợp cho tất cả được tiếp giáp với không can thiệp trắng

Nếu bạn tạo một biểu thức như

realnum = Word(nums) + "." + Word(nums) 

Sau đó, realnum.parseString("3.14") sẽ trả về danh sách 3 mã thông báo: hàng đầu '3', dấu '.' Và dấu '14'. Nhưng nếu bạn quấn trong này Kết hợp, như trong:

realnum = Combine(Word(nums) + "." + Word(nums)) 

sau đó realnum.parseString("3.14") sẽ trở lại '3.14' (mà sau đó bạn có thể chuyển đổi sang một phao sử dụng một hành động phân tích cú pháp). Và kể từ khi Combine ngăn chặn khoảng trắng mặc định của pyparsing bỏ qua giữa các thẻ, bạn sẽ không vô tình tìm thấy "3,14" trong "Câu trả lời là 3. 14 là câu trả lời tiếp theo".

+0

+1, một câu trả lời khá có thẩm quyền (không phải tất cả có thể nhận ra Paul là tác giả của 'pyparsing', vì vậy tôi chủ yếu chỉ ra điều đó! -). –

+0

Cảm ơn, Alex. Và @ Rosarch, chào mừng bạn đến với pyparsing! Những câu hỏi bạn đang đăng là rất phổ biến cho người dùng pyparsing lần đầu tiên, vì vậy hãy tiếp tục cắm. Tôi đã cố gắng để trang trải một số trong những điểm này trong wiki và tài liệu trực tuyến, nhưng tôi có thể thấy vẫn còn một cách để đi! – PaulMcG

+0

Vâng, tôi hoàn toàn nhận thức được rằng Paul là tác giả của pyparsing. Thật tuyệt khi bạn đang trên SO để cung cấp noobs như tôi với hướng dẫn. –

Các vấn đề liên quan