如何读取包含16位十六进制值的文件?

时间:2017-07-20 11:31:44

标签: python unicode

我有一个这样的文件:

\u9515\u7691\u853c\u788d\u7231
\u9515\u7691\u853c\u788d\u7231
\u9515\u7691\u853c\u788d\u7231

现在我想读取这个文件来打印字符串,我这样做:

with open(fi, "rb") as fi:
    print(fi.readline().strip().decode("utf-8"))

但我发现它仍然打印

\u9515\u7691\u853c\u788d\u7231

我怎样才能得到真正的字符串:

锕皑蔼碍爱

3 个答案:

答案 0 :(得分:3)

您可以使用unicode-escape

解码字符串
line = "\\u9515\\u7691\\u853c\\u788d\\u7231"
print line.decode("unicode-escape")

答案 1 :(得分:0)

您的解码功能会将您的数据视为常规字符串。尝试这样做:

with open(fi, "rb") as fi:
    data = fi.readline().strip()
    encode_data = data.encode("utf-8")
    print(encode_data.decode("utf-8")

答案 2 :(得分:0)

或者,由于这是一个Python转义字符串,您可以使用<div id="blue-column"></div>

ast.literal_eval

按预期给出:

line = r"\u9515\u7691\u853c\u788d\u7231"
print(ast.literal_eval('u"' + line + '"')