Как получить символ ° в строке в python? - PullRequest
53 голосов
/ 09 июля 2010

Как я могу получить символ ° (градус) в строку?

Ответы [ 6 ]

59 голосов
/ 10 июля 2010

Это наиболее дружественная к кодировщику версия указания символа Unicode:

degree_sign= u'\N{DEGREE SIGN}'

Примечание: должна быть заглавной буквой N в конструкции \N, чтобы избежать путаницы с символом перевода строки \ n,Имя символа внутри фигурных скобок может быть любым регистром.

Запоминать имя символа легче, чем его индекс юникода.Это также более читабельно, эргономично для отладки.Замена символов происходит во время компиляции: файл .py[co] будет содержать константу для u'°':

>>> import dis
>>> c= compile('u"\N{DEGREE SIGN}"', '', 'eval')
>>> dis.dis(c)
  1           0 LOAD_CONST               0 (u'\xb0')
              3 RETURN_VALUE
>>> c.co_consts
(u'\xb0',)
>>> c= compile('u"\N{DEGREE SIGN}-\N{EMPTY SET}"', '', 'eval')
>>> c.co_consts
(u'\xb0-\u2205',)
>>> print c.co_consts[0]
°-∅
35 голосов
/ 09 июля 2010

Поместите эту строку вверху вашего источника

# -*- coding: utf-8 -*-

Если ваш редактор использует другую кодировку, замените utf-8

Тогда вы можете включить символы utf-8 непосредственно в источник

29 голосов
/ 09 июля 2010
>>> u"\u00b0"
u'\xb0'
>>> print _
°

Кстати, все, что я делал, это поиск "степени юникода" в Google.Это приводит к двум результатам: «Знак степени U + 00B0» и «Степень Цельсия U + 2103», которые на самом деле отличаются:

>>> u"\u2103"
u'\u2103'
>>> print _
℃
9 голосов
/ 07 июня 2016

Приведенные выше ответы предполагают, что можно безопасно использовать кодировку UTF8 - эта модель специально предназначена для Windows.

Консоль Windows обычно использует кодировку CP850 и не utf-8, так что если выпопробуйте использовать исходный файл в кодировке utf8, вы получите эти 2 (неправильных) символа ┬░ вместо степени °.

Демонстрация (использование python 2.7 в консоли Windows):

deg = u'\xb0`  # utf code for degree
print deg.encode('utf8')

эффективно выводит ┬░.

Исправление: просто принудительно введите правильную кодировку (или лучше используйте юникод):

local_encoding = 'cp850'    # adapt for other encodings
deg = u'\xb0'.encode(local_encoding)
print deg

или если вы используете исходный файл, который явно определяеткодировка:

# -*- coding: utf-8 -*-
local_encoding = 'cp850'  # adapt for other encodings
print " The current temperature in the country/city you've entered is " + temp_in_county_or_city + "°C.".decode('utf8').encode(local_encoding)
6 голосов
/ 05 декабря 2015

просто используйте \xb0 (in a string); Python преобразует его автоматически

5 голосов
/ 07 мая 2018

Вы также можете использовать chr(176) для печати знака степени. Вот пример использования интерактивной оболочки python 3.6.5:

https://i.stack.imgur.com/spoWL.png

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...