5

出現ごとに2文字間の部分文字列を取得するのを手伝ってくれませんか

たとえば、指定されたサンプル シーケンスの "Q" と "E" の間のすべての部分文字列をすべて取得するには、次のようにします。

ex: QUWESEADFQDFSAEDFS

そして、最小の長さの部分文字列を見つけます。

4

2 に答える 2

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]
于 2009-04-25T11:14:49.650 に答える
7

RichieHindle はそれを正しく理解しています。

substrings.sort(key=len)

その冗長なラムダよりもそれを表現するためのより良い方法です;-)。

Python 2.5 以降を使用している場合、 min(substrings, key=len) は、ソートして [もちろん、0]番目の要素です。しかし、2.4 以前で行き詰まっている場合は、RichieHindle のアプローチが最良の代替手段です。

于 2009-04-26T04:21:40.947 に答える