我的問題很簡單,但我一直找不到合適的解決方案。下面給出的是我的程式:
given_list = ["Terms","I","want","to","remove","from","input_string"]
input_string = input("Enter String:")
if any(x in input_string for x in given_list):
#Find the detected word
#Not in bool format
a = input_string.replace(detected_word,"")
print("Some Task",a)
這里,given_list包含我想從input_string 中排除的術語。現在,我面臨的問題是 any() 產生一個 bool 結果,我需要 any() 檢測到的單詞并將其替換為空白,以便執行某些任務。
uj5u.com熱心網友回復:
迭代 given_list 并替換它們:
for i in given_list:
input_string = input_string.replace(i, "")
print("Some Task", input_string)
uj5u.com熱心網友回復:
根本不需要檢測:
for w in given_list:
input_string = input_string.replace(w, "")
str.replace 如果單詞不存在并且檢測所需的子字串測驗無論如何都必須掃描字串,則不會執行任何操作。
uj5u.com熱心網友回復:
查找每個單詞并替換它的問題在于 python 必須重復遍歷整個字串。另一個問題是您會在不想要的地方找到子字串。例如,“to”在排除串列中,因此您最終會將“tomato”更改為“ma”
在我看來,您似乎想替換整個單詞。決議是一個全新的主題,但讓我們簡化一下。我只是假設一切都是小寫的,沒有標點符號,盡管以后可以改進。讓我們使用 input_string.split() 來遍歷整個單詞。
我們想用空替換一些單詞,所以讓我們遍歷 input_string,并使用同名的內置函式過濾掉我們不想要的單詞。
exclude_list = ["terms","i","want","to","remove","from","input_string"]
input_string = "one terms two i three want to remove"
keepers = filter(lambda w: w not in exclude_list, input_string.lower().split())
output_string = ' '.join(keepers)
print (output_string)
一二三
請注意,我們創建了一個迭代器,它允許我們只遍歷整個輸入字串一次。而不是替換單詞,我們只是通過讓迭代器不回傳它們來跳過我們不想要的單詞。
由于 filter 需要一個函式來判斷是否包含或排除每個單詞的布林值,我們必須定義一個。我使用“lambda”語法來做到這一點。你可以用
def keep(word):
return word not in exclude_list
keepers = filter(keep, input_string.split())
uj5u.com熱心網友回復:
要回答關于 的問題any,請使用賦值運算式(Python 3.8 )。
if any((word := x) in input_string for x in given_list):
# match captured in variable word
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/341417.html
上一篇:NoSuchElementException:M沒有這樣的元素:無法定位元素:{"method":"xpath","selector":&q
