如何在Python中将°字符添加到字符串中?

99

我如何将°(度)符号添加到字符串中?


1
如果您正在尝试在Windows系统上打印度符号,请参阅此答案 - Bhargav Rao
8个回答

113

这是最适合程序员的指定 Unicode 字符的版本:

degree_sign = u'\N{DEGREE SIGN}'

转义序列:\N{name}

含义:Unicode数据库中名为name的字符

参考:https://docs.python.org/zh-cn/3/reference/lexical_analysis.html#string-and-bytes-literals

注意:

  • \N结构中,N必须大写,以避免与换行符\n混淆

  • 花括号内的字符名称可以是任何大小写形式

记住字符的名称比它的Unicode索引更容易。这也更可读,因此更易于调试。字符替换发生在编译时,即.py[co]文件将包含一个常量'°'

>>> 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]
°-

48
>>> u"\u00b0"
u'\xb0'
>>> print _
°

顺便说一下,我只是在Google上搜索了“unicode degree”。这会得到两个结果:“度符号U+00B0”和“摄氏度U+2103”,它们实际上是不同的:

>>> u"\u2103"
u'\u2103'
>>> print _
℃

4
在Python 3中,只需使用a = '\u00b0'即可。 - JAB
@SilentGhost:是的,但我当时不记得°的小键盘代码,也不想查找。 - JAB
1
谁还记得数字键盘代码?:) Compose key序列更容易记忆; 度数只需Compose-o-o。Compose键在X窗口系统上是标准的,但它也可用于Microsoft Windows;请参阅维基百科链接。 - PM 2Ring

47

把这行代码放在你的源文件顶部

# -*- coding: utf-8 -*-
如果您的编辑器使用不同的编码,请将其替换为 utf-8。
然后,您就可以直接在源代码中包含 utf-8 字符。

1
假设你的编辑器支持UTF-8编码。如果你的编辑器使用了不同的字符集,请在此指明。 - Ignacio Vazquez-Abrams

20

你也可以使用chr(176)来打印度数符号。 以下是使用Python 3.6.5交互式Shell的示例:

https://istack.dev59.com/spoWL.webp


13

只需在字符串中使用\xb0,Python会自动转换


12

上述答案假设可以安全使用UTF8编码-但这个答案特别针对Windows。

Windows控制台通常使用CP850编码,而不是utf-8,因此如果您尝试使用utf8编码的源文件,则会得到这两个(不正确的)字符┬░,而不是度数符号°

演示(在Windows控制台中使用Python 2.7):

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

有效地输出 ┬░

解决方法:只需强制使用正确的编码(或更好地使用Unicode):

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)

7

利用Python中的f-stringf"{var}",你可以使用:

theta = 45
print(f"Theta {theta}\N{DEGREE SIGN}.")

输出:Theta 45°。

*改进tzot的回答


0

特殊情况:向16x2或20x4 LCD发送字符串(例如,连接到带有I2C LCD显示器的树莓派):

f"Outside Temp: {my_temp_variable}{chr(223)}"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接