Получить название континента из страны, используя pycountry

Как преобразовать название континента из названия страны с помощью pycountry. У меня есть список таких стран

country = ['India', 'Australia', ....]

И я хочу получить от него название континента.

continent = ['Asia', 'Australia', ....]


person VIBHU BAROT    schedule 29.04.2019    source источник
comment
Я бы предложил использовать pypi.org/project/pycountry-convert.   -  person Vikas Yadav    schedule 29.04.2019
comment
@VikasYadav Спасибо за предложение! Итак, в соответствии с этим я должен назвать страну ISO_2 и, исходя из этого, назвать континент?   -  person VIBHU BAROT    schedule 29.04.2019
comment
для страны в pycountry.countries: country[country.name] = country.alpha_2 Это преобразует страну в alpha_2. Есть ли какой-нибудь способ, подобный этому, который может преобразовать название страны в название континента?   -  person VIBHU BAROT    schedule 29.04.2019


Ответы (3)


Глядя на документацию, поможет ли что-то подобное?:

код страны_alpha2_to_continent_code()

Он преобразует код страны (например: NO, SE, ES) в название континента.

Если сначала вам нужно получить код страны, вы можете использовать:

country_name_to_country_alpha2 (cn_name, cn_name_format = "по умолчанию")

чтобы получить код страны из названия страны.

Полный пример:

import pycountry_convert as pc

country_code = pc.country_name_to_country_alpha2("China", cn_name_format="default")
print(country_code)
continent_name = pc.country_alpha2_to_continent_code(country_code)
print(continent_name)
person Oliver H. D.    schedule 29.04.2019
comment
Именно то, что я искал! Спасибо - person VIBHU BAROT; 29.04.2019
comment
На самом деле в этом решении вы получите коды континентов, а не имена, но что угодно. - person Roman Alexandrovich; 29.04.2019
comment
Учитывая, что континентов всего 7, а не 195 стран, я уверен, что он сможет написать перевод на ;) - person Oliver H. D.; 29.04.2019

from pycountry_convert import country_alpha2_to_continent_code, country_name_to_country_alpha2

continents = {
    'NA': 'North America',
    'SA': 'South America', 
    'AS': 'Asia',
    'OC': 'Australia',
    'AF': 'Africa',
    'EU': 'Europe'
}

countries = ['India', 'Australia']

[continents[country_alpha2_to_continent_code(country_name_to_country_alpha2(country))] for country in countries]

Не знаю, что делать с Антарктидой ¯_(ツ)_/¯

person Roman Alexandrovich    schedule 29.04.2019
comment
Ха-ха Спасибо дружище! - person VIBHU BAROT; 29.04.2019
comment
Обратите внимание, что EU здесь забыли :) - person Steinfeld; 04.09.2019
comment
Требуется: 'EU': 'Europe', в конце! - person Patrick; 09.02.2021

Все необходимые инструменты доступны на странице pycountry-convert.

Вот пример того, как вы можете создать свою собственную функцию для прямого преобразования названия страны в название континента, используя инструменты pycountry:

import pycountry_convert as pc

def country_to_continent(country_name):
    country_alpha2 = pc.country_name_to_country_alpha2(country_name)
    country_continent_code = pc.country_alpha2_to_continent_code(country_alpha2)
    country_continent_name = pc.convert_continent_code_to_continent_name(country_continent_code)
    return country_continent_name

# Example
country_name = 'Germany'
print(country_to_continent(country_name))

Out[1]: Europe 

Надеюсь, поможет!

Помните, что вы можете получить доступ к описаниям функций, используя '?? имя_функции'

?? pc.country_name_to_country_alpha2
person Isra Mata    schedule 03.12.2019
comment
Это должен быть принятый ответ, так как он не жестко кодирует имена континентов, как ответ выше. - person Patrick; 09.02.2021