2010-05-30 44 views
5

Arasındaki fark nedir:PyParsing: Kombine() ne yapar?

foo = TOKEN1 + TOKEN2 

ve

foo = Combine(TOKEN1 + TOKEN2) 

Teşekkürler.

GÜNCELLEME: Denemeye dayanarak, Combine() uçbirim için bir ifade oluşturmaya çalıştığınız terminaller içindir, düz + ise terminal olmayanlar içindir. Ama emin değilim.

cevap

13

Kombine 2 etkileri vardır

realnum = Word(nums) + "." + Word(nums) 
gibi bir ifade oluşturursanız

O zaman realnum.parseString("3.14"), 3 jetonun listesini döndürür: önde gelen '3', '.' Ve sondaki '14'. Ama sarın eğer bunda olduğu gibi birleştirin:

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

sonra realnum.parseString("3.14") '3.14' dönecektir (sonra bir ayrıştırma eylemini kullanarak bir şamandıra dönüştürmek olabilir). Ve Combine, pyparsing'in varsayılan boşluklarını jetonlar arasında atlattığını bastırdığından, "3.14" cevabını "Cevap 3'tür. Bir sonraki cevaptır."

+0

+1, oldukça otoriter bir cevap (Paul'un "pyparsing" nin yazarı olduğunu fark edemezsiniz, bu yüzden çoğunlukla bunu işaretliyorum!). –

+0

Teşekkürler, Alex. VeRosarch, pyparsing'e hoş geldiniz! Gönderdiğiniz bu sorular ilk kez pyparsing kullanıcıları için çok yaygındır, bu yüzden takılı kalmayın. Çevrimiçi wiki ve dokümanlarda bu noktalardan bazılarını ele almaya çalıştım, ancak hala gidebilecek bir yol olduğunu görebiliyorum! – PaulMcG

+0

Evet, Paul'ün pyparsing'in yazarı olduğunun tamamen farkındayım. Bana rehberlik gibi noobs sağlamak için SO üzerinde olduğun için harika. –