python - 尝试在 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")
但是当我做一个应该返回完全相同的东西的函数时,它会出错。
解决方案
\u
是Python 文字字符串的 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)
推荐阅读
- rtf - RTF:带有红色波浪下划线的彩色 RGB 字体
- java - 如何修复自定义时间线问题 JavaFx?
- django - Celery schedule 没有触发任务,没有报错
- graphviz - 如何在 GraphViz 中创建双向边?
- python - django 模型 - save() 方法中的消息打印两次,但对象保存一次
- spring - Spring Boot 中的 Mongo 查询
- angular - Angular:加载可能包含脚本的 HTML 代码
- jenkins - 具有嵌套参数的 Jenkins 插件描述符
- json - NodeJS 请求不会对整个表单进行编码
- jquery-ui - JSF 中的 Jquery UI 组合框功能