我已經考慮了一段時間,并決定尋求您的幫助。例如,我有一個字串“abcdef gg arfse”或“abcd ee fgh”我的問題是我想在字母加倍的那個點拆分這些字串。"abcdefggarfse" - > "abcdefg" 和 "garfse" "abcdeefgh" - > "abcde" 和 "efgh"
非常感謝!
uj5u.com熱心網友回復:
s1="abcdefggarfse"
s2= "abcdeefgh"
s3="abcdefgggarffse"
s4= "abcdeeefgh"
def split_string(string):
tokens = []
base_delimiter = 0
for i in range(len(string) - 1):
if string[i] == string[i 1]:
tokens.append(string[base_delimiter:i 1])
base_delimiter = i 1
tokens.append(string[base_delimiter:])
return tokens
if __name__ == '__main__':
l = split_string(s1)
print(l)
l = split_string(s2)
print(l)
l = split_string(s3)
print(l)
l = split_string(s4)
print(l)
這產生:
['abcdefg', 'garfse']
['abcde', 'efgh']
['abcdefg', 'g', 'garf', 'fse']
['abcde', 'e', 'efgh']
我不知道這是否是 3 次或更多次重復的預期行為,但這可以檢測到多個雙字母。
uj5u.com熱心網友回復:
遍歷字串并找到字母重復的索引。您可以簡單地使用切片操作。
a = "abcdefggarfse"
for i in range(0,len(a) -1):
if a[i] == a[i 1]:
pos = i 1
break
pos1, pos2 = a[0:pos], a[pos:]
輸出
pos1 = 'abcdefg'
post2 = 'garfse'
uj5u.com熱心網友回復:
此功能在內置split方法中不可用,因此最簡單的選擇是使用for回圈來查找雙字符并切片獲取輸出字串。
假設需要將字串精確拆分一次(分成兩個輸出字串),以下將完成這項作業:
input_ = "abcdefggarfse"
for i in range(len(input_) - 1):
if input_[i] == input_[i 1]:
output1 = input_[:i 1]
output2 = input_[i 1:]
break
print (output1)
print (output2)
輸出是:
abcdefg
garfse
您可能需要修改代碼以將輸出放入串列、處理多個拆分或沒有拆分的字串等。
另一種選擇是使用正則運算式,但如果您之前沒有使用過它們,則上述方法是最簡單的。
uj5u.com熱心網友回復:
您可以創建一個函式來回圈遍歷單詞并跟蹤所看到的前一個字符。
def split_rep(word):
prev = None
for idx, char in enumerate(word):
if char == prev:
return word[:idx], word[idx:]
else:
prev = char
return word, None
split_rep("abcdefggarfse")
('abcdefg', 'garfse')
split_rep("abcdeefgh")
('abcde', 'efgh')
split_rep("abcdefgh")
('abcdefgh', None)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/396861.html
