[英]Program to remove proper nouns from paragraph
我正在嘗試編寫一個程序,該程序從Wikipedia解析的段落中刪除所有專有名詞。
no_pnoun_paragraph = ""
for i in range(len(clean_paragraph)):
if clean_paragraph[i].isupper() == True and clean_paragraph[i - 2] != ".":
cutoff = clean_paragraph[i:]
delete = cutoff[:cutoff.find(" ")]
clean_paragraph = clean_paragraph.replace(delete, "")
print clean_paragraph
這會嘗試刪除所有以大寫字母開頭但不以句子開頭的單詞。 我收到一個錯誤,該字符串索引超出了if語句的范圍。
如何解決我的代碼以解決此問題?
我認為,該錯誤是由於以下代碼行
`clean_paragraph` = clean_paragraph.replace(delete, "")
由於要替換它,因此clean_paragraph的長度減少了。 但是,當for循環開始時, clean_paragraph
長度不同。
例如:
可以說,當您執行len(clean_paragraph)
時,您的clean_paragraph是"Hello"
,長度現在是5
所以..如果您按以下方式replace 'l'
clean_paragraph = clean_paragraph.replace("l","")
然后,clean_paragraph的長度減小為3 。 但是,由於for循環繼續進行,范圍為0到5。但是,由於前一個操作減小了大小,因此當for循環的索引變為4時, clean_paragraph[4]
超出了當前范圍 , clean_paragraph為“嗨” ,您正在嘗試訪問第4個索引
您可以使用re
來做到這一點:
clean_paragraph = 'You are right. We are Going to be there.'
no_pnoun_paragraph = re.sub(r'([^.])( [A-Z]\w*)', r'\1', clean_paragraph)
# 'You are right. We are to be there.'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.