[英]Str.find() unable to search for '\n'
我正在嘗試使用str.find()
在兩個關鍵字之間提取文本。 但是它找不到'\\ n'的出現
text = 'Cardiff, the 6th November 2007\n company \n'
String_to_extract = '6th November 2007'
keywords = {'date': ['Cardiff, the ' , '\n']}
碼:
text2=text[text.find(keywords['date']0])+len(keywords[0]):text.find(keywords['date'][1])]
print(text2)
str.find() is unable to search for '\n', which results in no output
PS-只想使用str.find()
方法
您錯誤地計算了第一個索引。 嘗試這個:
text = 'Cardiff, the 6th November 2007\n\n company \n\n'
keywords = ['Cardiff, the ', '\n']
result = text[text.find(keywords[0])+len(keywords[0]):text.find(keywords[1])]
輸出:
6th November 2007
這里有幾個問題:
keywords
字典中,您使用的date
變量應為字符串: 'date'
。 keywords
字典中,您沒有對\\\\n
兩次轉義,而沒有在text
變量中這樣做。 key
變量沒有定義在任何地方。 這應該是keywords
字典中定義的'date'
鍵。 嘗試這個:
# String to be extracted = '6th November 2007'
text = 'Cardiff, the 6th November 2007\n\n \n\n'
keywords = {'date' : ['Cardiff, the ' , '\n\n']}
a = text.find(keywords['date'][0]) + len(keywords['date'][0])
b = text.find(keywords['date'][1])
text2 = text[a:b]
print(text2)
概括答案。 使用此代碼:
text2 = text[text.find(keywords[key][0])+len(keywords[key][0]):text.find(keywords[key][1])] # you can replace the key with whatever you want as keys
這是一個非常有趣的問題,它說明了如果以鏈式方式使用,瑣碎的事情可能會變得很難找到。 讓我們看看您的代碼中正在發生什么。 您說您的代碼似乎找不到第一個匹配項,但是,我想相反地指出,它肯定會找到第一個匹配項。 在文字'Cardiff, the 6th November 2007\\n\\n \\n\\n'
您嘗試查找'Cardiff, the '
的首次出現。 您將在文本中看到字符串的索引從索引0開始,即text[0]
。 因此這段代碼text[text.find(keywords[key][0]):text.find(keywords[key][1])]
實質上就是text[0:text.find(keywords[key][1])]
。 現在在Python切片規則中,0是包含在內的,您將獲得類似於Cardiff, the 6th November 2007
類的輸出Cardiff, the 6th November 2007
並認為它沒有找到第一個匹配項。 因此,為了對其進行修復,您需要從'Cardiff, the '
之后開始切片。 您可以通過以這種方式更改text2分配來實現:
text2 = text[text.find(keywords[key][0])+len(keywords[key][0]):text.find(keywords[key][1])]
還有其他方法可以實現您想要的,但這是您最初嘗試要做的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.