語言:Python
所以我在不使用外部庫的情況下從文本中提取了命名物體。然后我想創建兩個串列,一個用于以 AL 開頭的名稱;另一個用于以 MZ 開頭的名稱。我寫了這段代碼,但它沒有回傳任何輸出。有人看到這里有什么問題嗎?請注意,我是一般編碼的初學者,可能不熟悉術語。
AL = []
MZ = []
for match in matches:
if ((match[0] >= "A") and (match[0] <= "L")):
AL.append(match)
print("Words between A-L are: ", AL)
elif ((match[0] >= "M" and match[0] <= "Z")):
MZ.append(match)
print("Words between M-Z are: ", MZ)
編輯:
有人問我“匹配”來自什么:
pattern = re.compile(r'\.?\s\b[A-Z][a-z]\w ')
matches = pattern.findall(text)
# print(matches)
這是我嘗試對 AL 和 MZ 之間的名稱進行排序的輸出串列:
matches = ['Rossini', 'William Tell', 'America', 'Athabaskan', 'Mackenzie River', 'Morse', 'Trappist', 'Plains', 'India']
我的意思是“它不起作用”是它回傳空括號。
Names between A and L: []
Names between M and Z: []
感謝大家的貢獻。
uj5u.com熱心網友回復:
所以看看下面的例子:
def filter_words(words):
AL = []
MZ = []
unclassified = []
for word in words:
if ((word[0] >= "A") and (word[0] <= "L")):
AL.append(word)
elif ((word[0] >= "M" and word[0] <= "Z")):
MZ.append(word)
else:
unclassified.append(word)
return AL, MZ, unclassified
AL, MZ, unclassified = filter_words(["Al", "Bob", "Todd", "Zack", "todd", "zack"])
print(AL)
print(MZ)
print(unclassified)
輸出
['Al', 'Bob']
['Todd', 'Zack']
['todd', 'zack']
根據您的要求,您可能希望word.upper()在處理 if 陳述句之前呼叫- 正如您所看到的 - 如果名稱以小寫開頭將是未分類的
uj5u.com熱心網友回復:
我想您可能遇到的主要問題是您正在檢查大寫值,如果 match[0] 是小寫,它將不起作用
此外,您在每次迭代時都在列印,您應該等待整個回圈運行然后列印。這里
AL= []
MZ = []
for match in matches:
if ((match[0].lower() >= "a") and (match[0].lower() <= "l")):
AL.append(match)
elif ((match[0].lower() >= "m" and match[0].lower() <= "z")):
MZ.append(match)
print("Words between A-L are: ", AL)
print("Words between M-Z are: ", MZ)
如果這仍然不起作用,請也共享匹配物件。此外,當兩個陳述句都不為真時,您的代碼也不考慮情況。
uj5u.com熱心網友回復:
在這里,您必須注意單詞大小寫:
matches = ['Arbre', 'Amie', 'Maison', 'Ligne', 'Zebre', 'Maths']
AL = []
MZ = []
for match in matches:
match = match.upper()
if ((match[0] >= "A") and (match[0] <= "L")):
AL.append(match)
elif ((match[0] >= "M" and match[0] <= "Z")):
MZ.append(match)
print("Words between A-L are: ", AL)
print("Words between M-Z are: ", MZ)
輸出是:
Words between A-L are: ['ARBRE', 'AMIE', 'LIGNE']
Words between M-Z are: ['MAISON', 'ZEBRE', 'MATHS']
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/388293.html
上一篇:Django-在一行中回圈
下一篇:C 中的while回圈
