[英]Python - Capture next word after specific string in a text
我試圖只捕獲特定字符串后的 1 個單詞。 例如,
import re
my_string="I love Apple juice, it is delicious."
print(my_string.split("I love",1)[-1])
我得到結果:
Apple juice, it is delicious.
但我只需要 1 個字,之后就沒有了。
Apple
如何刪除 Apple 之后的所有內容? 我試過rstrip
,它有效但不是最有效的方法。 謝謝。
只需使用str.split
兩次,並確保使用maxsplit
避免不必要的分裂:
my_string = 'I love Apple juice, it is delicious.'
res = my_string.split('I love', maxsplit=1)[-1]\
.split(maxsplit=1)[0]
'Apple'
我會在您的正則表達式中嘗試使用積極的表情:
>>> import re
>>> my_string="I love Apple juice, it is delicious."
>>> re.search('(?<=I love )(\w+)', my_string).group(1)
'Apple'
您還可以嘗試使用正面看待的Regex組構造:
match = re.search('(?<=I love\s)\S*', 'I love Apple juice, it is delicious.')
編輯:我很想念您的問題,並更新了我的模式以匹配您的尋找。
有很多方法可以做到這一點。 您可以以最簡單的形式執行以下操作:
>>> s = 'Apple juice, it is delicious.'
>>> s.split()[0]
'Apple'
或使用功能齊全的正則表達式( import re
)
>>> re.search(r'^[\S]*(?!\S\s)', s)
'Apple'
您可以使用
import re
my_string="I love Apple juice, it is delicious."
print( re.findall(r"\bI\s+love\s+(\w+)", my_string) )
# => ['Apple']
請參閱Python 演示和正則表達式演示。 請注意, re.findall
返回字符串中找到的所有匹配項,並且由於模式中有一個捕獲組,因此返回的字符串將是第 1 組值。
詳情:
\b
- 單詞邊界I
- 一個I
字\s+
- 一個或多個空格(如果空格是不間斷空格怎么辦? \s
可以很好地處理這些情況)love
——一個love
的詞\s+
- 一個或多個空格(\w+)
- 第 1 組:一個或多個字母、數字或下划線。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.