【问题标题】:Convert unicode to string in python在python中将unicode转换为字符串
【发布时间】:2020-05-12 18:28:10
【问题描述】:

如何将 unicode 字符转换为文本?最好不导入任何库。输入是列表中的字符串。
样本输入:

\\u006A\\u0061\\u0064\\u0072\\u006F

预期输出:

jadro

(+ 最后不应该是字节类) 我正在翻译的列表:

["I[0][1][0][0] = '\\u006A\\u0061\\u0064\\u0072\\u006F';", "I[1][1][0][0] = '\\u0047\\u0075\\u0074\\u0065\\u006E\\u0062\\u0065\\u0072\\u0067\\u006F\\u0076\\u0061';", "I[2][1][0][0] = '\\u0070\\u006C\\u00E1\\u0161\\u0165';", "I[3][1][0][0] = '\\u0061\\u0073\\u0074\\u0065\\u006E\\u006F\\u0073\\u0066\\u00E9\\u0072\\u0061';", "I[4][1][0][0] = '\\u004D\\u006F\\u0068\\u006F\\u0072\\u006F\\u0076\\u0069\\u010D\\u0069\\u010D\\u006F\\u0076\\u0061';", "I[5][1][0][0] = '\\u006B\\u00F4\\u0072\\u0061';", "I[6][1][0][0] = '\\u0050\\u0065\\u0076\\u006E\\u0069\\u006E\\u0073\\u006B\\u00E1';", "I[7][1][0][0] = '\\u0067\\u0072\\u0061\\u006E\\u0069\\u0074\\u006F\\u0076\\u00E1';", "I[8][1][0][0] = '\\u0034\\u002C\\u0035';", "I[9][1][0][0] = '\\u0070\\u0072\\u0076\\u006F\\u0068\\u00F4\\u0072';", "I[10][1][0][0] = '\\u0052\\u006F\\u0064\\u0069\\u006E\\u0069\\u0061';", "I[11][1][0][0] = '\\u0050\\u0061\\u006E\\u0067\\u0065\\u0061';", "I[12][1][0][0] = '\\u0065\\u0075\\u0072\\u00E1\\u007A\\u0069\\u006A\\u0073\\u006B\\u00E1';", "I[13][1][0][0] = '\\u0070\\u0061\\u0063\\u0069\\u0066\\u0069\\u0063\\u006B\\u00E1';", "I[14][1][0][0] = '\\u0041\\u0074\\u006C\\u0061\\u006E\\u0074\\u0069\\u0063\\u006B\\u00E1';", "I[15][1][0][0] = '\\u0069\\u006E\\u0064\\u006F';", "I[16][1][0][0] = '\\u0061\\u0066\\u0072\\u0069\\u0063\\u006B\\u00E1';", "I[17][1][0][0] = '\\u0061\\u006E\\u0074\\u0061\\u0072\\u006B\\u0074\\u0069\\u0063\\u006B\\u00E1';", "I[18][1][0][0] = '\\u0076\\u0072\\u00E1\\u0073\\u006E\\u0065\\u006E\\u0069\\u0065';", "I[19][1][0][0] = '\\u0068\\u0072\\u0061\\u0073\\u0165';", "I[20][1][0][0] = '\\u0070\\u0072\\u0069\\u0065\\u006B\\u006F\\u0070\\u006F\\u0076\\u00E1\\u0020\\u0070\\u0072\\u0065\\u0070\\u0061\\u0064\\u006C\\u0069\\u006E\\u0061';", "I[21][1][0][0] = '\\u006D\\u0061\\u0067\\u006D\\u0061\\u0074\\u0069\\u0063\\u006B\\u00FD\\u0020\\u006B\\u0072\\u0062';", "I[22][1][0][0] = '\\u004B\\u0061\\u006C\\u0064\\u0065\\u0072\\u0061';", "I[23][1][0][0] = '\\u0056\\u0065\\u007A\\u0075\\u0076';", "I[24][1][0][0] = '\\u0048\\u0061\\u0076\\u0061\\u006A\\u0073\\u006B\\u00FD\\u0063\\u0068';", "I[25][1][0][0] = '\\u0046\\u0075\\u0064\\u017E\\u0069';", "I[26][1][0][0] = '\\u006B\\u0079\\u0073\\u006C\\u00E9';", "I[27][1][0][0] = '\\u0062\\u0061\\u007A\\u0061\\u006C\\u0074\\u0069\\u0063\\u006B\\u00E1';", "I[28][1][0][0] = '\\u0052\\u0069\\u0063\\u0068\\u0074\\u0065\\u0072\\u006F\\u0076\\u006F\\u0075';", "I[29][1][0][0] = '\\u0073\\u0065\\u0069\\u007A\\u006D\\u006F\\u0067\\u0072\\u0061\\u0066';"]

保存翻译和损坏结果的代码:

f = open("dump.TXT","w+")
f.close()
f = open("dump.TXT","a")
for i in res:
    unic = i.split("'")[-2]
    trans = bytes(unic,"utf-8").decode('unicode-escape') + "\n"
    trans = trans.encode('utf-8').decode('utf8')
    f.write(trans)

完整代码:

import re

with open("org22.htm","r") as f:
    data = f.read()

start = "I = new Array();"
end = "State = new Array();"
s = data
array_r = s[s.find(start)+len(start):s.rfind(end)]
array_r = array_r.split("\n")
count, res = 0, []
for line in array_r:
    compare = "I["+str(count)+"][1][0][0] ="
    if compare in line:
            res.append(line)
            count += 1

f = open("dump.TXT","w+")
f.close()
f = open("dump.TXT","a")
for i in res:
    unic = i.split("'")[-2]
    trans = bytes(unic,"utf-8").decode('unicode-escape') + "\n"
    trans = trans.encode('utf-8').decode('utf8')
    f.write(trans)

f.close()

【问题讨论】:

    标签: python-3.x unicode


    【解决方案1】:

    不清楚您的输入是字节还是字符串。如果是字符串,可以转成字节,用unicode-escape解码:

    s = "\\u006A\\u0061\\u0064\\u0072\\u006F"
    
    bytes(s, 'utf-8').decode('unicode-escape')
    # 'jadro'
    

    如果它已经是字节,那么只需:

    b = b"\\u006A\\u0061\\u0064\\u0072\\u006F"
    
    b.decode('unicode-escape')
    

    【讨论】:

    • 嗨,现在它产生了这个:kysl� 而不是这个:kyslá,有什么办法可以解决这个问题吗?
    • @peter123 你从什么开始应该产生kyslá
    • 问题在于它应该保存:kyslá,以及带有特殊字符的不同单词但会损坏它们
    • 您提供的代码有效,但我正在翻译列表
    • 哇,它实际上只是 vscode,在记事本中它很好:D。无论如何,非常感谢您的帮助和时间:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    相关资源
    最近更新 更多