314

特定の部分文字列の後の文字列を取得するにはどうすればよいですか?

たとえば、次の文字列を取得し"world"たい

my_string="hello python world, I'm a beginner"

...この場合は: ", I'm a beginner")

4

9 に答える 9

525

最も簡単な方法は、おそらくターゲット単語で分割することです

my_string="hello python world , i'm a beginner "
print my_string.split("world",1)[1] 

split は、分割する単語 (または文字) と、オプションで分割数の制限を受け取ります。

この例では、「世界」で分割し、分割を 1 つだけに制限します。

于 2012-09-24T20:27:07.063 に答える
74
s1 = "hello python world , i'm a beginner "
s2 = "world"

print s1[s1.index(s2) + len(s2):]

に が存在しない場合に対処したい場合s2は、 ではなく を使用してください。その呼び出しの戻り値が である場合、 はではありません。s1s1.find(s2)index-1s2s1

于 2012-09-24T20:27:31.080 に答える
71

誰も言及していないことに驚いていpartitionます。

def substring_after(s, delim):
    return s.partition(delim)[2]

私見、このソリューションは@arshajiiよりも読みやすいです。それ以外は、@arshajii が最速であるという点で最適だと思います。不要なコピー/部分文字列を作成しません。

于 2013-05-23T11:35:10.177 に答える
21

正規表現を使用してこれを行う場合は、非キャプチャ グループを使用して「世界」という単語を取得し、その後のすべてを取得することができます。

(?:world).*

サンプル文字列はここでテストされます

于 2012-09-24T20:31:20.497 に答える
8

Python 3.9 では、新しいremoveprefixメソッドが追加されています。

>>> 'TestHook'.removeprefix('Test')
'Hook'
>>> 'BaseTestCase'.removeprefix('Test')
'BaseTestCase'
于 2020-06-10T15:21:25.327 に答える
6

それは古い質問ですが、私はまったく同じシナリオに直面しました。「low」という単語を区切り文字として使用して文字列を分割する必要があります。私にとっての問題は、同じ文字列に下と下の単語があることでした。

このように re モジュールを使用して解決しました

import re

string = '...below...as higher prices mean lower demand to be expected. Generally, a high reading is seen as negative (or bearish), while a low reading is seen as positive (or bullish) for the Korean Won.'

re.split を正規表現で使用して、正確な単語に一致させます

stringafterword = re.split('\\blow\\b',string)[-1]
print(stringafterword)
' reading is seen as positive (or bullish) for the Korean Won.'

一般的なコードは次のとおりです。

re.split('\\bTHE_WORD_YOU_WANT\\b',string)[-1]

これが誰かを助けることを願っています!

于 2017-01-13T03:15:16.877 に答える