我想將字串串列中的關鍵字大寫,但引號中的關鍵字除外。
假設你有
list1 = ["I like bananas", "he likes 'bananas' and apples", "we like bananas and apples"]
list2 = ["bananas", "apples"]
我想要的輸出是
>>> ["I like BANANAS", "he likes 'bananas' and APPLES", "we like BANANAS and APPLES"]
uj5u.com熱心網友回復:
您可以使用正則運算式來檢查短語 inlist2是否被引號包圍:
import re
In [ ]: re.sub(rf"(?<!')bananas(?!')", "BANANAS", "I like bananas")
Out[ ]: 'I like BANANAS'
In [ ]: re.sub(rf"(?<!')bananas(?!')", "BANANAS", "I like 'bananas'")
Out[ ]: "I like 'bananas'"
您可以創建函式來替換中的所有模式list2:
def capitalize(s, pats):
for pat in pats:
s = re.sub(rf"(?<!'){pat}(?!')", pat.upper(), s)
return s
In [ ]: [capitalize(s, list2) for s in list1]
Out[ ]:
['I like BANANAS',
"he likes 'bananas' and APPLES",
'we like BANANAS and APPLES']
uj5u.com熱心網友回復:
這就是我所擁有的
for sentence in list1:
for keyword in list2:
if keyword in sentence:
start_index = sentence.index(keyword)
if start_index != 0 and sentence[start_index-1] == "'":
sentence = sentence[:start_index] keyword.upper() sentence[start_index len(keyword):]
print(sentence)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/456708.html
