Unicode literals that work in python 3 and 2

后端 未结 2 1922
再見小時候
再見小時候 2020-12-25 11:27

So I have a python script that I\'d prefer worked on python 3.2 and 2.7 just for convenience.

Is there a way to have unicode literals that work in both? E.g.

相关标签:
2条回答
  • 2020-12-25 12:29

    In 3.0, 3.1, and 3.2:

    from __future__ import unicode_literals
    

    Source: ubershmekel, in the question. See revision 4 for the original.

    0 讨论(0)
  • 2020-12-25 12:30

    Edit - Since Python 3.3, the u'' literal works again, so the u() function isn't needed.

    The best option is to make a method that creates unicode objects from string objects in Python 2, but leaves the string objects alone in Python 3 (as they are already unicode).

    import sys
    if sys.version < '3':
        import codecs
        def u(x):
            return codecs.unicode_escape_decode(x)[0]
    else:
        def u(x):
            return x
    

    You would then use it like so:

    >>> print(u('\u00dcnic\u00f6de'))
    Ünicöde
    >>> print(u('\xdcnic\N{Latin Small Letter O with diaeresis}de'))
    Ünicöde
    
    0 讨论(0)
提交回复
热议问题