如何在jupyter-notebook / python交互模式下使用gettext?

时间:2017-11-15 17:18:49

标签: python ipython jupyter-notebook jupyter gettext

我使用以下代码(我从this question获取)来获取俄语名称的国家/地区代码。

def get_country_code(russian_name):
    gettext.translation('iso3166', pycountry.LOCALES_DIR, languages=['RU']).install()
    country_code = ''.join([country.alpha_2 for country in pycountry.countries if _(country.name) == russian_name])
    return country_code

但是当我尝试在我的jupyter-notebook中使用此功能时,它会给我以下错误:

TypeError: 'str' object is not callable

似乎这是因为在jupyter以及交互模式中_表示先前计算的结果,但gettext将其定义为其功能。

如何在Jupyter中执行此代码?

1 个答案:

答案 0 :(得分:0)

我找到了问题的解决方案。 install()函数在内置函数中设置变量_,如下所示:

builtins.__dict__['_'] = self.gettext

所以我们可以改用这个函数。

def get_country_code(russian_name):
    rus = gettext.translation('iso3166', pycountry.LOCALES_DIR, languages=['RU'])
    rus.install()
    country_code = ''.join([country.alpha_2 for country in pycountry.countries if rus.gettext(country.name) == russian_name]) # u'FR'
    return country_code