How to get ° character in a string in python?

前端 未结 6 1050
南方客
南方客 2020-12-07 16:07

How can I get a ° (degree) character into a string?

相关标签:
6条回答
  • 2020-12-07 16:43
    >>> u"\u00b0"
    u'\xb0'
    >>> print _
    °
    

    BTW, all I did was search "unicode degree" on Google. This brings up two results: "Degree sign U+00B0" and "Degree Celsius U+2103", which are actually different:

    >>> u"\u2103"
    u'\u2103'
    >>> print _
    ℃
    
    0 讨论(0)
  • 2020-12-07 16:43

    Above answers assume that UTF8 encoding can safely be used - this one is specifically targetted for Windows.

    The Windows console normaly uses CP850 encoding and not utf-8, so if you try to use a source file utf8-encoded, you get those 2 (incorrect) characters ┬░ instead of a degree °.

    Demonstration (using python 2.7 in a windows console):

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

    effectively outputs ┬░.

    Fix: just force the correct encoding (or better use unicode):

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

    or if you use a source file that explicitely defines an encoding:

    # -*- 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)
    
    0 讨论(0)
  • 2020-12-07 16:44

    You can also use chr(176) to print the degree sign. Here is an example using python 3.6.5 interactive shell:

    0 讨论(0)
  • 2020-12-07 16:45

    just use \xb0 (in a string); python will convert it automatically

    0 讨论(0)
  • 2020-12-07 16:46

    Put this line at the top of your source

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

    If your editor uses a different encoding, substitute for utf-8

    Then you can include utf-8 characters directly in the source

    0 讨论(0)
  • 2020-12-07 16:54

    This is the most coder-friendly version of specifying a unicode character:

    degree_sign= u'\N{DEGREE SIGN}'
    

    Note: must be a capital N in the \N construct to avoid confusion with the '\n' newline character. The character name inside the curly braces can be any case.

    It's easier to remember the name of a character than its unicode index. It's also more readable, ergo debugging-friendly. The character substitution happens at compile time: the .py[co] file will contain a constant for 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]
    °-∅
    
    0 讨论(0)
提交回复
热议问题