簡體   English   中英

Python TypeError for re.search in patterns

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM