代码之家  ›  专栏  ›  技术社区  ›  sdasdadas

如何将字符串列表转换为unicode值?[副本]

  •  0
  • sdasdadas  · 技术社区  · 12 年前

    我收到以下内容:

    value = ['\', 'n']
    

    以及我转换为 unicode 和呼叫 ord 引发错误:

    ord() expects a character, but string of length 2 found
    

    如果 len(value) > 2 .

    我该怎么做?

    1 回复  |  直到 12 年前
        1
  •  2
  •   abarnert    12 年前

    如果你想知道如何将其作为一个字符串来处理 '\\n' 然后可以解释为单个字符 '\n' 根据一些规则,比如Python的unicode转义规则,在编写代码之前,您必须确定您想要什么。

    首先,要将两个单字符串的列表转换为一个两个字符串,只需使用 join :

    >>> value = ['\\', 'n']
    >>> escaped_character = ''.join(value)
    >>> escaped_character
    '\\n'
    

    接下来,要将两个字符的转义序列解释为单个字符,您必须知道要撤消哪些转义规则。如果是Python的Unicode转义,那么有一个名为 unicode_escape 这样做:

    >>> character = escaped_character.decode('unicode_escape')
    >>> character
    u'\n'
    

    另一方面,如果您试图撤消UTF-8编码,然后是Python字符串转义、C反斜杠转义或其他不同的代码,那么显然必须编写不同的代码。考虑到你所说的UTF-8,我想你可能确实想要一些不同的东西。例如 u'é'.encode('UTF-8') 是两个字节的序列 '\xce\xa9' 。只是打电话 decode('unicode_escape') 在上面会给你两个字符的序列 u'\u00c3\u00a9' ,这不是你想要的。

    不管怎样,既然你有了一个角色,就打电话 ord :

    >>> char_ord = ord(character)
    >>> char_ord
    10
    

    我不确定转换为unicode位是关于什么的。如果这是Python 3.x,那么字符串已经是Unicode了。如果它是2.x,并且字符串是ASCII,则可以保证 ord(s) == ord(unicode(s)) 。如果是2.x,并且字符串是其他编码的,那么只需调用 unicode 他们会给你一个 UnicodeError 或mojibake;您还需要传入一个编码,在这种情况下,您还可以使用 decode 方法