首页 > 解决方案 > 尝试在 Python 中创建盲文表

问题描述

我一直在尝试创建一个系统,将 1 和 0 的表变成盲文字符,但它一直给我这个错误

文件“brail.py”,第 16 行 stringToWrite=u"\u"+brail([1,1,1,0,0,0,1,1]) ^ SyntaxError: (unicode error) 'unicodeescape' codec can' t 解码位置 0-1 中的字节:截断 \uXXXX 转义

我当前的代码是

def brail(brailList):
    if len(brailList) == 8:
        brailList.reverse()
        brailHelperList=[0x80,0x40,0x20,0x10,0x8,0x4,0x2,0x1]
        brailNum=0x0
        for num in range(len(brailList)):
            if brailList[num] == 1:
                brailNum+=brailHelperList[num]
        stringToReturn="28"+str(hex(brailNum))[2:len(str(hex(brailNum)))]
        return stringToReturn
    else:
        return "String Needs To Be 8 In Length"

fileWrite=open('Write.txt','w',encoding="utf-8")
stringToWrite=u"\u"+brail([1,1,1,0,0,0,1,1])
fileWrite.write(stringToWrite)
fileWrite.close() 

它在我做的时候有效,fileWrite.write(u"\u28c7")但是当我做一个应该返回完全相同的东西的函数时,它会出错。

以防万一的代码图像

标签: pythonunicodebraille

解决方案


\uPython 文字字符串的 Unicode 转义序列。一个 4 十六进制数字的 unicode 代码点应遵循转义序列。如果代码点丢失或太短,则为语法错误。

>>> '\u28c7'
'⣇'

>>> '\u'
  File "<stdin>", line 1
    '\u'
        ^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: truncated \uXXXX escape

如果您使用的是 Python 3,则u不需要字符串前缀,因为字符串在内部存储为 unicode。u维护前缀是为了与 Python 2 代码兼容。

这就是异常的原因,但是,您不需要像那样构造 unicode 代码点。您可以使用ord()chr()功能:

    from unicodedata import lookup
    braille_start = ord(lookup('BRAILLE PATTERN BLANK'))
    return chr(braille_start + brailNum)

推荐阅读