基本上我有一個串列,我想在字串中搜索串列中的任何模式。
KB1 = ["q","w","e","r","t","y","u","i","o","p"]
Example = ("yada yada qwe tYu IoP weR")
并且每次找到 qwe 、 tYu 、 IoP 和 weR 時,我只需要它向變數添加一個,并且如上所示,無論大小寫如何,還需要找到它們。
TimesPatternsAppear = 0
有任何想法嗎?
uj5u.com熱心網友回復:
您可以將串列中的各個字母連接成一個字串,然后簡單地使用inorfind運算子來查看是否在另一個字串中找到了一個字串(如此處所做的)。如果您將該.lower()方法應用于兩個字串(或者,或者,.upper()但它必須對兩個字串相同),它將不區分大小寫。
uj5u.com熱心網友回復:
這個怎么樣?
KB1 = ["q","w","e","r","t","y","u","i","o","p"]
Example = "yada yada qwe tYu IoP weR"
string_as_a_list = Example.split(" ")
TimesPatternsAppear=0
for eachWord in string_as_a_list:
eachWord = eachWord.lower()
counter = 0
for char in eachWord:
if char in KB1:
counter =1
if counter == len(eachWord):
TimesPatternsAppear =1
print(TimesPatternsAppear)
uj5u.com熱心網友回復:
另一種方法是創建一個包含不同可能組合的串列:
KB1 = ["q","w","e","r","t","y","u","i","o","p"]
Example = ("yada yada qwe tYu IoP weR")
TimesPatternsAppear = 0
patterns = []
for i in range(len(KB1)):
for j in range(i 1, len(KB1)):
patterns.append("".join(KB1[i:j]))
for word in Example.split():
if word.lower() in patterns:
TimesPatternsAppear = 1
print(TimesPatternsAppear)
編輯:
可以調整此代碼以檢測每個匹配項,甚至是部分匹配項
KB1 = ["q","w","e","r","t","y","u","i","o","p"]
Example = ("yada yada qwe tYu IoP weR")
TimesPatternsAppear = 0
patterns = []
for i in range(len(KB1)):
for j in range(i 1, len(KB1)):
patterns.append("".join(KB1[i:j]))
for word in Example.split():
for pattern in patterns:
if pattern in word.lower():
TimesPatternsAppear = 1
print(TimesPatternsAppear)
發現的模式:
['y', 'y', 'q', 'qw', 'qwe', 'w', 'we', 'e', 't', 'ty', 'tyu', 'y', 'yu', 'u', 'i', 'io', 'o', 'w', 'we', 'wer', 'e', 'er', 'r']
編輯2:只有長度為3的模式:
KB1 = ["q","w","e","r","t","y","u","i","o","p"]
Example = ("qwertyuiop")
TimesPatternsAppear = 0
patterns = []
for i in range(len(KB1) - 2):
patterns.append("".join(KB1[i:i 3]))
for word in Example.split():
for pattern in patterns:
if pattern in word.lower():
TimesPatternsAppear = 1
print(TimesPatternsAppear)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/425610.html
