我的問題是或多或少類似於: Is there a way to substring a string in Python? 但它是更具體的導向。 如何獲取位於初始字符串中的兩個已知單詞之間的字符串的參數值。有沒有一種方法來處理Python中字符串中的兩個單詞之間的子字符串?
實施例:
mySrting = "this is the initial string"
Substring = "initial"
知道「該」和「串」是該串中的兩個已知的話,可以用於獲取子串。
謝謝!
我的問題是或多或少類似於: Is there a way to substring a string in Python? 但它是更具體的導向。 如何獲取位於初始字符串中的兩個已知單詞之間的字符串的參數值。有沒有一種方法來處理Python中字符串中的兩個單詞之間的子字符串?
實施例:
mySrting = "this is the initial string"
Substring = "initial"
知道「該」和「串」是該串中的兩個已知的話,可以用於獲取子串。
謝謝!
您可以從這裏簡單的字符串操作開始。 str.index
是你最好的朋友,因爲它會告訴你一個字符串中子字符串的位置;你也可以開始在字符串中的某處後來搜索:
>>> myString = "this is the initial string"
>>> myString.index('the')
8
>>> myString.index('string', 8)
20
綜觀片[8:20]
,我們已經接近我們想要的東西:
>>> myString[8:20]
'the initial '
當然,因爲我們找到了起始位置'the'
,我們需要說明它的長度。最後,我們可能要剝離空白:
>>> myString[8 + 3:20]
' initial '
>>> myString[8 + 3:20].strip()
'initial'
相結合,你可以這樣做:
startIndex = myString.index('the')
substring = myString[startIndex + 3 : myString.index('string', startIndex)].strip()
如果您想尋找多次比賽,那麼你只需要重複在只查看字符串的其餘部分時這樣做。由於str.index
將只找到了第一場比賽,你可以用它來非常有效地掃描字符串:
searchString = 'this is the initial string but I added the relevant string pair a few more times into the search string.'
startWord = 'the'
endWord = 'string'
results = []
index = 0
while True:
try:
startIndex = searchString.index(startWord, index)
endIndex = searchString.index(endWord, startIndex)
results.append(searchString[startIndex + len(startWord):endIndex].strip())
# move the index to the end
index = endIndex + len(endWord)
except ValueError:
# str.index raises a ValueError if there is no match; in that
# case we know that we’re done looking at the string, so we can
# break out of the loop
break
print(results)
# ['initial', 'relevant', 'search']
謝謝,這是按預期工作(Y) –
您也可以嘗試這樣的事:
mystring = "this is the initial string"
mystring = mystring.strip().split(" ")
for i in range(1,len(mystring)-1):
if(mystring[i-1] == "the" and mystring[i+1] == "string"):
print(mystring[i])
我建議使用的list, split
組合和join
方法。 如果您在子字符串中查找多於1個單詞,這應該有所幫助。
打開字符串轉換成數組:
words = list(string.split())
讓您的開啓和關閉標記的指數則返回字符串:
open = words.index('the') close = words.index('string') substring = ''.join(words[open+1:close])
你可能想用t改善一下他在繼續之前檢查有效性。
如果您的問題變得更加複雜,即多次出現對值,我建議使用正則表達式。如果您在list
查看它們
import re substring = ''.join(re.findall(r'the (.+?) string', string))
的re
應單獨存放子。
我使用描述之間的空格來排除單詞之間的空格,您也可以修改爲您的需要。
所以你想要兩個已知單詞之間的字符串?爲什麼這些空格不是'Substring'的一部分? –
此外,如果在'mySrting'中多次出現'''和'string',會發生什麼情況? –
@WillemVanOnsem那麼它應該可能會顯示一個字符串列表。 –