【问题标题】:Backslashes and unicode反斜杠和 unicode
【发布时间】:2020-07-28 03:39:46
【问题描述】:

我正在制作一个罗马字到平假名的翻译器,当我尝试这种连接时出现错误。我制作了一个键列表,并使用 for 循环按照 unicode 的顺序性质制作字典。

combos = {}
for hexy in range(12363, 12435):
    combos[sounds[12363 - hexy]] = ('\u%s' % str(chr(hex(hexy))))

我得到了错误 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: truncated \uXXXX escape

我尝试将反斜杠加倍,将 u 和反斜杠分开,使用 + 代替值插入,并检查其他人何时遇到类似错误。

【问题讨论】:

    标签: python string unicode concatenation backslash


    【解决方案1】:

    如果你想要角色,只需使用chr(hexy)

    如果您想要转义码并假设 Python 3.6+,请使用 f'\\u{hexy:04x}'

    例如(删除sounds,因为它没有被定义):

    combos = {}
    for i,hexy in enumerate(range(12363, 12435)):
        combos[i] = chr(hexy)
    print(combos)
    

    结果:

    {0: 'か', 1: 'が', 2: 'き', 3: 'ぎ', 4: 'く', 5: 'ぐ', 6: 'け', 7: 'げ', 8: 'こ', 9: 'ご', 10: 'さ', 11: 'ざ', 12: 'し', 13: 'じ', 14: 'す', 15: 'ず', 16: 'せ', 17: 'ぜ', 18: 'そ', 19: 'ぞ', 20: 'た', 21: 'だ', 22: 'ち', 23: 'ぢ', 24: 'っ', 25: 'つ', 26: 'づ', 27: 'て', 28: 'で', 29: 'と', 30: 'ど', 31: 'な', 32: 'に', 33: 'ぬ', 34: 'ね', 35: 'の', 36: 'は', 37: 'ば', 38: 'ぱ', 39: 'ひ', 40: 'び', 41: 'ぴ', 42: 'ふ', 43: 'ぶ', 44: 'ぷ', 45: 'へ', 46: 'べ', 47: 'ぺ', 48: 'ほ', 49: 'ぼ', 50: 'ぽ', 51: 'ま', 52: 'み', 53: 'む', 54: 'め', 55: 'も', 56: 'ゃ', 57: 'や', 58: 'ゅ', 59: 'ゆ', 60: 'ょ', 61: 'よ', 62: 'ら', 63: 'り', 64: 'る', 65: 'れ', 66: 'ろ', 67: 'ゎ', 68: 'わ', 69: 'ゐ', 70: 'ゑ', 71: 'を'}
    

    【讨论】:

    • 也许还可以解释直接错误是因为\u 之后的转义符需要正好是四个字符并且需要是十六进制的。您的代码完美地解决了这个问题,但没有解释这个变化。
    猜你喜欢
    • 2017-05-18
    • 2017-03-29
    • 1970-01-01
    • 2010-12-14
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多