2013-08-27 107 views

回答

1

Split每個空白字符串,並將其轉換爲sets。他們的intersection將包含他們共同的所有單詞。

>>> set("cat feet".split()).intersection(set("cat shoes".split())) 
set(['cat']) 

此方法不關心單詞的排序。即使「貓」沒有出現在兩個琴絃的相同位置,「腳貓」和「貓鞋」也會輸出「貓」。如果你想找到存在於兩個字符串中相同位置的話,你可以zip分割字符串連接在一起,並且只顯示存在於同一個地方的兩個詞:

>>> [a for a,b in zip("cat feet".split(), "cat shoes".split()) if a == b] 
['cat'] 
>>> [a for a,b in zip("feet cat".split(), "cat shoes".split()) if a == b] 
[] 
+0

顯示python的表現力。 – mvw

+0

太棒了!爲了進一步擴展,你將如何匹配每個字符串中的2個單詞,並保持它們的順序? 例如 「像貓腳」 「貓鞋樣」 得到的結果 - 「貓樣」 集不會讓這個順序是什麼呢? – NorthSide

+0

這取決於。與「貓鞋」相匹配的「貓像腳」輸出的正確順序是什麼?爲什麼? – Kevin

0

只是關於使用正則表達式: 正則表達式等價於有限自動機,它們具有隻有一組有限狀態的屬性,這又意味着它們具有有限的內存。因此你不能做任何涉及未知任意長度目標字符串的東西。

相關問題