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