2013-08-27 67 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

只是关于使用正则表达式: 正则表达式等价于有限自动机,它们具有只有一组有限状态的属性,这又意味着它们具有有限的内存。因此你不能做任何涉及未知任意长度目标字符串的东西。

相关问题