Перейти к содержимому

Python weather как поменять язык

  • автор:

Python weather как поменять язык

При форматировании чисел Python по умолчанию использует англосаксонскую систему, при которой разряды целого числа отделяются друг от друга запятыми, а дробная часть от целой отделяется точкой. В континентальной Европе, например, используется другая система, при которой разряды разделяются точкой, а дробная и целая часть — запятой:

# англосаксонская система 1,234.567 # европейская система 1.234,567

И для решения проблемы форматирования под определенную культуру в Python имеется встроенный модуль locale .

Для установки локальной культуры в модуле locale определена функция setlocale() . Она принимает два параметра:

setlocale(category, locale)

Первый параметр указывает на категорию, к которой применяется функция — к числам, валютам или и числам, и валютам. В качестве значения для параметра мы можем передавать одну из следующих констант:

  • LC_ALL : применяет локализацию ко всем категориям — к форматированию чисел, валют, дат и т.д.
  • LC_NUMERIC : применяет локализацию к числам
  • LC_MONETARY : применяет локализацию к валютам
  • LC_TIME : применяет локализацию к датам и времени
  • LC_CTYPE : применяет локализацию при переводе символов в верхний или нижний регистр
  • LC_COLLIATE : применяет локаль при сравнении строк

Второй параметр функции setlocale указывает на локальную культуру, которую надо использовать. На ОС Windows можно использовать код страны по ISO из двух символов, например, для США — «us», для Германии — «de», для России — «ru». Но на MacOS необходимо указывать код языка и код страны, например, для английского в США — «en_US», для немецкого в Германии — «de_DE», для русского в России — «ru_RU». По умолчанию фактически используется культура «en_US».

Непосредственно для форматирования чисел и валют модуль locale предоставляет две функции:

  • currency(num) : форматирует валюту
  • format_string(str, num) : подставляет число num вместо плейсхолдера в строку str Применяются следующие плейсхолдеры:
    • d : для целых чисел
    • f : для чисел с плавающей точкой
    • e : для экспоненциальной записи чисел

    Перед каждым плейсхолдером ставится знак процента %, например:

    При выводе дробных чисел перед плейсхолдером после точки можно указать, сколько знаков в дробной части должно отображаться:

    %.2f # два знака в дробной части

    Применим локализацию чисел и валют в немецкой культуре:

    import locale locale.setlocale(locale.LC_ALL, "de") # для Windows # locale.setlocale(locale.LC_ALL, "de_DE") # для MacOS number = 12345.6789 formatted = locale.format_string("%f", number) print(formatted) # 12345,678900 formatted = locale.format_string("%.2f", number) print(formatted) # 12345,68 formatted = locale.format_string("%d", number) print(formatted) # 12345 formatted = locale.format_string("%e", number) print(formatted) # 1,234568e+04 money = 234.678 formatted = locale.currency(money) print(formatted) # 234,68 €

    Если вместо конкретного кода в качестве второго параметра передается пустая строка, то Python будет использовать культуру, которая применяется на текущей рабочей машине. А с помощью функции getlocale() можно получить эту культуру:

    import locale locale.setlocale(locale.LC_ALL, "") number = 12345.6789 formatted = locale.format_string("%.02f", number) print(formatted) # 12345,68 print(locale.getlocale()) # ('Russian_Russia', '1251') - Windows # ('ru_RU', 'UTF-8') - MacOS

    Стоит отметить, что в зависимости от системы вывод может отличаться.

    Не могу сделать русский язык для pyowm

    Хотел сделать программу, на основе PyOwm. Вроде всё работало, но я не могу сделать русский язык, хотя всё сделал правильно. Вот код:

    from pyowm import OWM owm = OWM('[token]', language = 'ru') place = input("Укажите город/страну: ") mgr = owm.weather_manager() observation = mgr.weather_at_place(place) w = observation.weather print(w) 

    Что это выдаёт:

    owm = OWM('[token]', language = "ru") # You MUST provide a valid API key TypeError: __init__() got an unexpected keyword argument 'language' 

    Пишет что-то связанное с аргументом language, но я не понимаю
    Отслеживать
    68k 218 218 золотых знаков 79 79 серебряных знаков 221 221 бронзовый знак
    задан 16 авг 2020 в 9:50
    Никита Картавый Никита Картавый
    37 1 1 серебряный знак 5 5 бронзовых знаков
    Код и ошибки в текстовом виде (не скринами) в самом вопросе (не в комментариях)
    16 авг 2020 в 9:52

    В версии pyowm-2.10.0 на этот аргумент не ругается, зато ругается дальше, что там нет метода weather_manager .

    16 авг 2020 в 10:14

    4 ответа 4

    Сортировка: Сброс на вариант по умолчанию

    Методы описанные выше у меня не работали (я думаю как и у вас, поэтому мне пришлось самому копаться на официальном сайте с документацией (там все на английском)

    Вот ссылка если вы что-то не поймете или еще что: https://github.com/csparpa/pyowm там переходите в раздел документация («Documentation»)/ там, под ним будет «Code recipes»/ потом какое-то время мотаете вниз и там будет («Language setting»)-то, что нам и нужно)

    from pyowm.owm import OWM from pyowm.utils.config import get_default_config config_dict = get_default_config() config_dict['language'] = 'pt' # вместо pt вставляете свой язык (ru) owm = OWM('ваш API ключ', config_dict)`from pyowm.owm import OWM 

    кроме pt и API БОЛЬШЕ НИЧЕГО НЕ ТРОГАЕТЕ надеюсь я кому то помог))))

    Saved searches

    Use saved searches to filter your results more quickly

    Cancel Create saved search

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

    Телеграмм-бот, рассказывающий о погоде

    nsbarsukov/weather-telegram-bot

    This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

    Switch branches/tags
    Branches Tags
    Could not load branches
    Nothing to show
    Could not load tags
    Nothing to show

    Name already in use

    A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

    Cancel Create

    • Local
    • Codespaces

    HTTPS GitHub CLI
    Use Git or checkout with SVN using the web URL.
    Work fast with our official CLI. Learn more about the CLI.

    Sign In Required

    Please sign in to use Codespaces.

    Launching GitHub Desktop

    If nothing happens, download GitHub Desktop and try again.

    Launching GitHub Desktop

    If nothing happens, download GitHub Desktop and try again.

    Launching Xcode

    If nothing happens, download Xcode and try again.

    Launching Visual Studio Code

    Your codespace will open once ready.

    There was a problem preparing your codespace, please try again.

    Latest commit

    Git stats

    Files

    Failed to load latest commit information.

    Latest commit message
    Commit time

    README.md

    Телеграмм-бот, рассказывающий о погоде. Написан на python.

    Применяются техники NLP для извлечения городов в их начальной форме и дат из текстов пользователя (пакет natasha для NLP на русском языке).

    Для получения координат города по его названию используется Yandex API для перевода географических координат в адрес и наоборот.
    Для получения прогноза погоды по полученным координатам используется Open Weather API.

    • Что умеет бот
    • Используемые библиотеки
    • Запуск бота
    • Полезные ссылочки с tutorial по написанию бота
    • Почему выбрана python-telegram-bot библиотека

    • Умеет говорить погоду в ЛЮБОМ городе России (за исключением каких-то мелких городов, о которых не знает API яндекса или open weather).
    • Бот умеет извлекать названия городов и приводить их названия в начальную форму (чтобы потом получить координаты данного города).
    • Бот умеет извлекать даты и приводит их единому формату (далеко не идеально, но справляется с многими кейсами).
    • На основе извлеченного названия города бот умеет давать прогноз погоды на нужную дату (в пределах 5 дней вперед).
    • Бот умеет реагировать на непонятные высказывания.
    • Бот умеет здороваться, прощаться.

    Перед запуском проекта необходимо установить следующие пакеты:

    • python-telegram-bot — библиотека-обертка для работы с api телеграмма (подробнее здесь)
    • natasha — библиотека для nlp при работе с русским текстом (подробнее здесь)
    • emoji — пригодится для работы со смайликами
    • requests — для работы с Api Yandex и API Open Weather
    1. Иметь установленный python версии >= 3.8
    2. Загрузи все используемые библиотеки командой:
      pip3 install python-telegram-bot natasha emoji requests
    3. В файле constants/global_env_variables.py нужно задать токены для работы с апишками.

    Рекомендуемый вариант: ничего не менять в коде, а задать каждую переменную в глобальном окружении своего компьютера (как создавать глобальные переменные окружения для bash/zsh здесь).
    Легкий и быстрый вариант (только для локального запуска!): Ты можешь просто заменить каждую переменную в духе BOT_TOKEN = os.environ.get(‘BOT_TOKEN’) на BOT_TOKEN=»your token» .

    • в константе BOT_TOKEN подставь токен своего бота (как создать бота и получить токен можно почитать здесь)
    • в константе YANDEX_GEOCODER_API_TOKEN подставь токен для API для перевода географических координат в адрес и наоборот.
    • в константе OPEN_WEATHER_API_TOKEN подставь токен для Open Weather API.

    Полезные ссылочки с tutorial по написанию бота

    • Полное руководство Python по созданию Telegram Bot с использованием python-telegram-bot (статья от 7 мая 2020)
    • Telegram-бот для получения адреса по локации или координатам с использованием python-telegram-bot (статья от 9 сентября 2020)
    • Telegram-бот на python-telegram-bot + flask + heroku deploy
    • Статья на TProger по созданию телеграмм чат бота и его deploy на Heroku
    • Пакет natasha для nlp на русском языке
    • Как отправлять смайлики через telegram bot и emoji cheat sheet

    Почему выбрана python-telegram-bot библиотека

    На момент создания бота для Python имелось 2 крупных библиотеки согласно странице на официальном сайте телеграмма в разделе «Bot Code Examples»:

    • python-telegram-bot
    • pyTelegramBotAPI

    Обе либы разрабатывали с 2015 (согласно статистике релизов) и активно разрабатываются до сих пор. Выбор в пользу python-telegram-bot был сделан крайне примитивно: с 2015 года по 2020 он собрал в 3 раза больше звезд и форков, чем его конкурент (была цель научиться пользоваться инструментом, которое широко одобрило сообщество).

    python-weather 1.1.0

    A free and asynchronous weather API wrapper made in Python, for Python.

    Навигация

    Ссылки проекта

    Статистика

    Метаданные

    Лицензия: MIT License (MIT)

    Автор: null8626

    Метки weather, forecast, weather-api, weather-forecast

    Требует: Python >=3.8

    Сопровождающие

    Классификаторы

    Описание проекта

    python-weather

    A free and asynchronous weather Python API wrapper made in Python, for Python.

    Installation

     pip install python-weather

    Example

    Подробности проекта

    Ссылки проекта

    Статистика

    Метаданные

    Лицензия: MIT License (MIT)

    Автор: null8626

    Метки weather, forecast, weather-api, weather-forecast

    Требует: Python >=3.8

    Сопровождающие

    Классификаторы

    История выпусков Уведомления о выпусках | Лента RSS

    Эта версия

    Загрузка файлов

    Загрузите файл для вашей платформы. Если вы не уверены, какой выбрать, узнайте больше об установке пакетов.

    Источник распределения

    Uploaded 23 нояб. 2023 г. source

    Построенный дистрибутив

    Uploaded 23 нояб. 2023 г. py3

    Хеши для python-weather-1.1.0.tar.gz

    Хеши для python-weather-1.1.0.tar.gz

    Алгоритм Хеш-дайджест
    SHA256 25011f8dba6bdf5cb7b48986ecf212c955932802c4aebc9c1bc9e4e515ce5908 Копировать
    MD5 950f9cddc00222dbe517676e52b17c6b Копировать
    BLAKE2b-256 c3196ffacc9d143a3141ddb67034955d80d1a8b35bd100f48a23967c2df44a47 Копировать

    Хеши для python_weather-1.1.0-py3-none-any.whl

    Хеши для python_weather-1.1.0-py3-none-any.whl

    Алгоритм Хеш-дайджест
    SHA256 7710b644996981c8491350b6a4a954cae9e2d4109376ef9a4d5f3a6c42bf7aa2 Копировать
    MD5 111e78e76f980f22635e0f857f4e5bbd Копировать
    BLAKE2b-256 e36c4ace20878f4fcddf5885a176e97aca0607b0f7ddfdebe667e5f72e5cf4f8 Копировать

    Помощь

    О PyPI

    Внесение вклада в PyPI

    Использование PyPI

    Разработано и поддерживается сообществом Python’а для сообщества Python’а.
    Пожертвуйте сегодня!

    PyPI», «Python Package Index» и логотипы блоков являются зарегистрированными товарными знаками Python Software Foundation.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *