[英]Python TypeError for re.search in patterns
您可以在此處查看完整的文件: https://github.com/slideri812/pyhotn/blob/main/tapt.py我大約在 6 個月前寫了這篇文章,它運行良好。 我每周與另外 2 人運行一次此腳本。 在 950 多頁之后的前一天,它遇到了一個錯誤: TypeError: expected string or bytes-like object 。
在過去的 5 天里,我嘗試了各種方法來解決這個問題,但沒有任何效果。 我已經查看了很多文章,但看起來我所做的一切都還可以。 我認為它可能特定於那一頁,但找不到問題或讓它越過錯誤頁面。 我被困住了。
這是完整的錯誤:
TypeError Traceback (most recent call last) in 159 160 for pattern in patterns: --> 161 if re.search(pattern, text_to_search): 162 break 163 else: c:\users\slide\appdata\local\programs\python\python38-32\lib\re.py in search(pattern, string, flags) 197 """Scan through string looking for a match to the pattern, returning 198 a Match object, or None if no match was found.""" --> 199 return _compile(pattern, flags).search(string) 200 201 def sub(pattern, repl, string, count=0, flags=0): TypeError: expected string or bytes-like object
該網站一直在添加和刪除列表,這不是問題。 我檢查了它拋出錯誤的頁面,它之前的頁面,一切看起來都很好,但顯然不是。 我有內置的錯誤處理,因為我希望有時沒有數據。
該位從字段中獲取和數據:
#location try: data_dict["location"] = detail.find("a",{"id":"myDataList_lblLocation_1"}).text.strip()[10:] except AttributeError as e: data_dict["location"] = None try: data_dict["location2"] = detail.find("span",{"id":"lblAddress"}).text.strip() except AttributeError as e: data_dict["location2"] = None
這是我的邏輯。 我在字符串中搜索城市名稱並匹配該名稱以應用特定編碼:
#major patterns = ["Bangkok", "Phuket", "Chiang Mai", "Pattaya", "Chon Buri", "None"] text_to_search = (data_dict["location"]) for pattern in patterns: if re.search(pattern, text_to_search): break if pattern == "Bangkok": data_dict["major locations"] = "54fbfc7f-a0cf-4a1d-9361-6059a44c2415" elif pattern == "Phuket": data_dict["major locations"] = "cbad67b4-7870-4ee2-b8a3-62d8c9f87091" elif pattern == "Chiang Mai": data_dict["major locations"] = "2966d83a-04f9-4b4e-b27e-05afe700b13f" elif pattern == "Pattaya": data_dict["major locations"] = "fbfaabca-0e9e-4db4-be1c-6cc8e8b8f63d" elif pattern == "Chon Buri": data_dict["major locations"] = "ce1da47b-78b6-4351-b849-e337db181c6a" elif pattern == "None": data_dict["major locations"] = "None" else: data_dict["major locations"] = "No Match Found"
一些幫助將不勝感激。 我通常能夠自己解決這些問題,通常是通過閱讀和/或嘗試不同的事情,但這次不行。
提前致謝
乍一看,在第 120 行,你有這個塊:
try:
data_dict["location"] = detail.find("a",{"id":"myDataList_lblLocation_1"}).text.strip()[10:]
except AttributeError as e:
data_dict["location"] = None
我的猜測是您遇到屬性錯誤並將None
存儲為值。 然后,當您稍后 go 進行正則表達式搜索時,您會遇到TypeError
。 在 except 塊中放置打印或日志語句以確認
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.