0

私は次のことをしています:

'm:max'.lstrip('m:')
'ax'

私が取得する必要があるのは、"m:"唯一のものを削除することです。検索結果をフィルタリングするために使用している他の多くの組み合わせがあります。たとえば"g:Holiday、「休日」の特定のカテゴリを検索します。

また、プレフィックスがない場合もあります。これは、すべてのカテゴリを検索することを意味します。

どうすればいいですか?

4

3 に答える 3

7

ルールが何であるかは 100% 明確ではありませんが、最初のコロンの前にすべてを削除するだけの問題である場合は、次を使用できますsplit

>>> 'm:abc'.split(':',1)[-1]
'abc'
>>> 'mabc'.split(':',1)[-1]
'mabc'
>>> 'm:a:bc'.split(':',1)[-1]
'a:bc'

の 2 番目の引数はsplit、実行する分割の数を制限し、分割[-1]の正しい部分 (分割がない場合は最初の要素) を取得します。

のドキュメントをstr.split()参照してください。

ただし、コロンが 2 番目の位置にある必要がある場合:

def remove_prefix(s):
    return s[2:] if len(s) > 1 and s[1] == ':' else s
于 2013-04-30T19:30:50.203 に答える
6

複雑にしないでおく。

prefix = 'm:'
if a.startswith(prefix):
   a = a[len(prefix):]

ところで

'm:max'.lstrip('m:')

これは間違っています; lstrip は、オプションで削除する最初の部分文字列ではなく、削除する一連の文字を受け取ります (順序は関係ありません)。

于 2013-04-30T19:34:16.193 に答える
1

これは、上記を達成する方法を理解できる唯一の方法です。

re.sub(r'^[a-z]:','',string)
于 2013-04-30T19:27:35.527 に答える