Python3 возвращает TypeError: ожидаемая строка или байтовый объект

Я работаю над простым поиском часовых поясов, используя Python3 и библиотеку Arrow. Я работал над этим вчера, и он был настроен и работал отлично. Однако я загружаюсь сегодня и получаю такую ​​ошибку:TypeError: expected string or bytes-like object. Ниже мой код:

import googlemaps
from timezonefinder import TimezoneFinder
from dateutil import tz 
import arrow as ar

gmaps = googlemaps.Client(key="GOOGLE_API")

lat = 0
lon = 0
tf = TimezoneFinder()

def timeZone(region):
    global lat, lon
    lat = 0
    lon = 0
    try:
        lat = extract_values(gmaps.geocode(region), "latitude" or "lat")[1]
        lon = extract_values(gmaps.geocode(region), "longitude" or "lng")[1]
    except IndexError:
        print("query incorrect. please try again.")
        lat = 0
        lon = 0
    return(tf.timezone_at(lng=lon, lat=lat))

# Extracts all key values from a dictionary obj
def extract_values(obj, key):
    """Pull all values of specified key from nested JSON."""
    arr = []

    def extract(obj, arr, key):
        """Recursively search for values of key in JSON tree."""
        if isinstance(obj, dict):
            for k, v in obj.items():
                if isinstance(v, (dict, list)):
                    extract(v, arr, key)
                elif k == key:
                    arr.append(v)
        elif isinstance(obj, list):
            for item in obj:
                extract(item, arr, key)
        return arr

    results = extract(obj, arr, key)
    return results

utc = ar.utcnow()
location = input("Enter a city for the time zone it's in. ")
region = timeZone(location)
print(region) # returns None
shifted = utc.to(region)
formatted = shifted.format("HH:mm:ss")

print("time in", location, "is:", formatted)

Я знаю что мой locationпеременная имеет строковый класс, я проверил тип. Есть идеи? Я потратил много времени на поиски решения и ничего не могу найти. Спасибо!

РЕДАКТИРОВАТЬ: Отслеживание:

Traceback (most recent call last):
  File "timezoneArrow.py", line 51, in <module>
    shifted = utc.to(region)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/arrow/arrow.py", line 718, in to
    tz = parser.TzinfoParser.parse(tz)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/arrow/parser.py", line 548, in parse
    iso_match = cls._TZINFO_RE.match(tzinfo_string)
TypeError: expected string or bytes-like object

1 ответ

Ну, исправил, но не знаю как. Я просто перестроил свой код с нуля, используя те же команды, и это сработало! Хотел бы я дать лучшее решение.

Другие вопросы по тегам