Python 是否有一个函数用于';自动完成';将变量添加到所需的库?

Python 是否有一个函数用于';自动完成';将变量添加到所需的库?,python,Python,我正在尝试将一个变量设置为库中的变量。有这样的命令吗 我试图制作一个简单的时区转换器,我想检查输入变量,但我只能检查pytz列表中的变量,所以我想“自动完成”变量。我能做这个吗 import time import pytz country = input("enter country") from datetime import datetime from pytz import timezone fmt = "%H:%M %p" now_utc = datetime.now(timez

我正在尝试将一个变量设置为库中的变量。有这样的命令吗

我试图制作一个简单的时区转换器,我想检查输入变量,但我只能检查pytz列表中的变量,所以我想“自动完成”变量。我能做这个吗

import time
import pytz
country = input("enter country")

from datetime import datetime
from pytz import timezone

fmt = "%H:%M %p"

now_utc = datetime.now(timezone('UTC'))
print (now_utc.strftime(fmt))

from pytz import all_timezones
if country in all_timezones:
    country = #completed country in list 'all_timezones'
    timecountry = now_utc.astimezone(timezone(country))
    print (timecountry.strftime(fmt))

因此,您正在寻找一种方法,将用户输入与
所有时区中的字符串匹配,并查找有效的时区

据我所知,没有内置的函数可以完成它,你必须自己完成

这不是一项立即的任务,因为您可能有多个选项(假设用户输入的只是“欧洲”),您必须考虑到这一点

一种可能的方法是:

import datetime
import time
import pytz

country = input("Contry name: ")
now_utc = datetime.datetime.now(pytz.timezone('UTC'))

fmt = "%H:%M %p"

while True:
    possible_countries = [ac for ac in pytz.all_timezones if country in ac]
    if len(possible_countries) == 1:
        cc = possible_countries[0]
        timecountry = now_utc.astimezone(pytz.timezone(cc))
        print(timecountry.strftime(fmt))
        break
    elif len(possible_countries) > 1:
        print("Multiple countries are possible, please rewrite the country name")
        for cs in possible_countries:
            print(cs)
        country = input("Contry name: ")
    else:
        print("No idea of the country, here are the possible choices")
        for cs in pytz.all_timezones:
            print(cs)
        country = input("Contry name: ")
通过列表理解,我查找
all_时区
中包含用户输入的所有字符串。如果只有一个,脚本将假定这是正确的,并执行任务。否则,如果存在多个可能性,它将打印它们(使用for循环,每行一个,但您可以只打印列表,使其在屏幕上更短),然后要求用户重写国家名称。如果没有匹配项,它只打印所有可能的内容。您可能会发现在命令行上看到它很难看,但是您应该了解这个想法,然后改进它


如果您还希望检查用户输入中的拼写错误。。。这要困难得多。

我不知道你说的“自动完成”是什么意思。在我看来,你不需要更多了
country
是您需要传递给
pytz.timezone()
的字符串,我错了吗?您不需要重新分配或完成它。函数timezone()仅适用于“所有时区”列表中的时区,如“欧洲/罗马”。如果有人只输入“罗马”怎么办?