需要帮助将转义序列添加到稍后用于 unicode 的列表中的所有元素

Need a help in adding escape sequence to all elements in a list which later use for unicode

>>> n
['de', 'db', 'aa', 'dC', 'be', 'Ad', 'Da', 'a7', 'Cb', 'Cc', 'Ed', 'D7', 'CA', 'Da', 'db', 'aa', 'bD', 'db', '7d', 'Ad', 'c4', 'DA', 'Ba', 'bD', 'cc', 'DC', 'da', 'dd', '2d', 'CD', 'bA', 'dA', 'EC', 'Cb', 'dC', 'aC', 'Dd', 'ec', 'CD', 'Ae', 'aC', 'dE', 'BE', 'CE', 'db', 'AC', 'EC', 'cb', 'DE']

我有一个类似上面的列表。我想在每个元素之前添加转义字符 '\x'。我可以附加为 '\x',但稍后我想加入元素以创建一个 unicode 字符,如果我使用 '\x',它不起作用

请推荐

您可以而且应该使用 binascii.unhexlify

from binascii import unhexlify

n = ['de', 'db', 'aa', 'dC', 'be', 'Ad', 'Da', 'a7', 'Cb', 'Cc', 'Ed', 'D7',
     'CA', 'Da', 'db', 'aa', 'bD', 'db', '7d', 'Ad', 'c4', 'DA', 'Ba', 'bD',
     'cc', 'DC', 'da', 'dd', '2d', 'CD', 'bA', 'dA', 'EC', 'Cb', 'dC', 'aC',
     'Dd', 'ec', 'CD', 'Ae', 'aC', 'dE', 'BE', 'CE', 'db', 'AC', 'EC', 'cb', 'DE']

print(repr(unhexlify(''.join(n))))

binascii.unhexlify 的用法示例:unhexlify('abcdef') # '\xab\xcd\xef'

在您的例子中,十六进制数字存储在 list 中,因此您应该首先使用 str.join 连接这些数字。只需将其传递给 binascii.unhexlify.

您不能在字符串域中轻易做到这一点。幸运的是,使用 chrint:

很简单
>>> n = ['de', 'db', 'aa', 'dC', 'be', 'Ad', 'Da', 'a7', 'Cb', 'Cc', 'Ed', 'D7', 'CA', 'Da', 'db', 'aa', 'bD', 'db', '7d', 'Ad', 'c4', 'DA', 'Ba', 'bD', 'cc', 'DC', 'da', 'dd', '2d', 'CD', 'bA', 'dA', 'EC', 'Cb', 'dC', 'aC', 'Dd', 'ec', 'CD', 'Ae', 'aC', 'dE', 'BE', 'CE', 'db', 'AC', 'EC', 'cb', 'DE']
>>> [chr(int(k, 16)) for k in n]
['Þ', 'Û', 'ª', 'Ü', '¾', '\xad', 'Ú', '§', 'Ë', 'Ì', 'í', '×', 'Ê', 'Ú', 'Û', 'ª', '½', 'Û', '}', '\xad', 'Ä', 'Ú', 'º', '½', 'Ì', 'Ü', 'Ú', 'Ý', '-', 'Í', 'º', 'Ú', 'ì', 'Ë', 'Ü', '¬', 'Ý', 'ì', 'Í', '®', '¬', 'Þ', '¾', 'Î', 'Û', '¬', 'ì', 'Ë', 'Þ']

提供 hallazzang 答案的替代方案:我们可以使用 literal_eval 安全地将 unicode 的字符串表示形式转换为 unicode 字符。 '\xde',例如,评估为“Þ”。

>>>from ast import literal_eval
>>>
>>>[ast.literal_eval("'\x{}'".format(k)) for k in n]
['Þ', 'Û', 'ª', 'Ü', '¾', '\xad', 'Ú', '§', 'Ë', 'Ì', 'í', '×', 'Ê', 'Ú', 'Û', 'ª', '½', 'Û', '}', '\xad', 'Ä', 'Ú', 'º', '½', 'Ì', 'Ü', 'Ú', 'Ý', '-', 'Í', 'º', 'Ú', 'ì', 'Ë', 'Ü', '¬', 'Ý', 'ì', 'Í', '®', '¬', 'Þ', '¾', 'Î', 'Û', '¬', 'ì', 'Ë', 'Þ']

我指出 literal_evaleval 的安全替代品。 eval 允许任意代码成为 运行,而 literal_eval 只创建文字——比如整数、字符串、列表和字典。