簡體   English   中英

有條件地替換字符串中的子字符串

[英]Conditionally replace substring in a string

我有一個看起來像的字符串 -

str1="lol-tion haha-futures-tion yo-tion ard-tion pomo-tion"

我想用cloud替換子字符串IF它只有 1 -在 lol 和tion lol-tion之間

str2=str1.replace('tion','cloud')

但是當這個詞有兩個-比如實例haha-futures-tion我想像下面一樣替換它 -

str3=str1.replace('tion','')

期待輸出-> haha-futures

我怎樣才能完成這兩個條件替換?

您可以使用正則表達式和條件嘗試此代碼,

import re
str1="lol-tion haha-futures-tion yo-tion ard-tion pomo-tion"
str2=""
for sub_string in str1.split(' '):
    if re.search(r'^[a-z,-]+-tion$', sub_string):
        if re.match(r"[a-zA-Z]+[-][a-zA-Z]+-tion$",sub_string):
            print("match")
            sub_string=sub_string.replace('tion','')
        else:
            sub_string=sub_string.replace('tion','cloud')
        print(sub_string)
    str2+=sub_string+" "
print(str2)

IIUC 這將起作用:

new_str1 = ' '.join([string.strip('-tion') 
                     if string.count('-')==2 
                     else string.replace('tion','cloud') 
                     for string in str1.split(' ')])
print(new_str1)

'lol-cloud haha-futures yo-cloud ard-cloud pomo-cloud'

您的描述不是很清楚,也沒有完全說明在所有情況下應該發生什么,但這是一種解釋:

def replace_tion(word):
    replacements = {1: 'cloud', 2: ''}
    replacement = replacements.get(word.count('-'), 'tion')
    return word.replace('tion', replacement)

str1 = "lol-tion haha-futures-tion yo-tion ard-tion pomo-tion"
tions_replaced = ' '.join(replace_tion(word) for word in str1.split(' '))

# 'lol-cloud haha-futures- yo-cloud ard-cloud pomo-cloud'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM