特定の部分文字列の後の文字列を取得するにはどうすればよいですか?
たとえば、次の文字列を取得し"world"
たい
my_string="hello python world, I'm a beginner"
...この場合は: ", I'm a beginner"
)
最も簡単な方法は、おそらくターゲット単語で分割することです
my_string="hello python world , i'm a beginner "
print my_string.split("world",1)[1]
split は、分割する単語 (または文字) と、オプションで分割数の制限を受け取ります。
この例では、「世界」で分割し、分割を 1 つだけに制限します。
s1 = "hello python world , i'm a beginner "
s2 = "world"
print s1[s1.index(s2) + len(s2):]
に が存在しない場合に対処したい場合s2
は、 ではなく を使用してください。その呼び出しの戻り値が である場合、 はではありません。s1
s1.find(s2)
index
-1
s2
s1
誰も言及していないことに驚いていpartition
ます。
def substring_after(s, delim):
return s.partition(delim)[2]
私見、このソリューションは@arshajiiよりも読みやすいです。それ以外は、@arshajii が最速であるという点で最適だと思います。不要なコピー/部分文字列を作成しません。
Python 3.9 では、新しいremoveprefix
メソッドが追加されています。
>>> 'TestHook'.removeprefix('Test')
'Hook'
>>> 'BaseTestCase'.removeprefix('Test')
'BaseTestCase'
それは古い質問ですが、私はまったく同じシナリオに直面しました。「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]
これが誰かを助けることを願っています!