在Python中查找子字符串

5 投票
2 回答
10604 浏览
提问于 2025-04-15 11:14

请问你能帮我找到每次出现的两个字符之间的子字符串吗?

比如说,我想在给定的例子中找到所有在“Q”和“E”之间的子字符串,所有出现的地方都要找出来:

ex: QUWESEADFQDFSAEDFS

还有,我想找到长度最短的那个子字符串。

2 个回答

7

RichieHindle说得对,不过

substrings.sort(key=len)

用这种方式表达会比那个多余的lambda好一些;-)。

如果你使用的是Python 2.5或更高版本,min(substrings, key=len)会更快地找到最短的字符串(如果有多个最短的字符串,会返回第一个)。这比先排序再取第一个元素要快很多。当然,如果你只能用2.4或更早的版本,RichieHindle的方法就是最好的选择。

16
import re
DATA = "QUWESEADFQDFSAEDFS"

# Get all the substrings between Q and E:
substrings = re.findall(r'Q([^E]+)E', DATA)
print "Substrings:", substrings

# Sort by length, then the first one is the shortest:
substrings.sort(key=lambda s: len(s))
print "Shortest substring:", substrings[0]

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

撰写回答