2

文字列内の「/」から始まるすべての末尾の文字を置き換える最適化された方法が必要です。

例えば:

mytext = "this is my/string"

このような結果が欲しい

mytext = "this is my/text"

「/」の後の文字列のみを置き換える必要があり、最適化された方法で行う必要があります。誰かが私のための解決策を見つけることができますか?

4

4 に答える 4

4

最適化の意味がわかりませんが、次のようにします。

>>> import re
>>> mytext = "this is my/string"
>>> re.sub('/.*','/text',mytext)
'this is my/text'
于 2013-02-05T11:21:44.193 に答える
2

これは最速のようです:

s = "this is my/string"
mytext = s[:s.rindex('/')] + '/text'

私がテストしたこと:

>>> s = "this is my/string"
>>> pattern = re.compile('/.*$')

>>> %timeit pattern.sub('/text', s)
1000000 loops, best of 3: 730 ns per loop

>>> %timeit s[:s.rindex('/')] + '/text'
1000000 loops, best of 3: 284 ns per loop

>>> %timeit s.rsplit('/', 1)[0] + '/text'
1000000 loops, best of 3: 321 ns per loop
于 2013-02-05T11:24:28.437 に答える
0

正規表現 (最初の?)文字の後のすべてのテキストが必要なので、/これを行う最良の方法は次のとおりです。

mytext[:mytext.index('/')+1] + 'the replacement text'

ただし、「/」がない場合、これは失敗します。

于 2013-02-05T11:28:46.220 に答える
0

それがどれほど速いかはわかりませんし、エラーチェックもありませんが、スラッシュと結合文字列を見つけるでしょう。

s = 'this is my/string'
result = s[:s.find('/')+1]+'text'
于 2013-02-05T11:30:21.120 に答える