sna*_*ile 8 python string unicode python-3.x
我想写下面的代码:
import string
frm = b'acdefhnoprstuw'
to = '??????????????'
trans_table = string.maketrans(frm, to)
hebrew_phrase = 'fear cuts deeper than swords'.translate(trans_table)
Run Code Online (Sandbox Code Playgroud)
上面的代码不起作用,因为to
参数string.maketrans(frm, to)
必须是字节序列,而不是字符串.问题是字节序列只能包含ASCII文字字符.因此,我无法进行将英文字符串翻译为希伯来字符串的转换.原因是string.maketrans()
重新编译一个字节对象.
是否有一种优雅的方式来使用string.maketrans()
和translate()
函数(或与unicode 一起使用的等效函数)来完成我的任务?
Len*_*bro 13
你需要使用str.maketrans(),它接受两个str作为参数.
>>> frm = 'acdefhnoprstuw'
>>> to = '??????????????'
>>> trans_table = str.maketrans(frm, to)
>>> hebrew_phrase = 'fear cuts deeper than swords'.translate(trans_table)
>>> hebrew_phrase
'???? ???? ?????? ???? ??????'
Run Code Online (Sandbox Code Playgroud)
String.maketrans仍然存在于Python 3.1中,但这只是因为他们错过了将它移动到3.0中的bytes.maketrans().它已经在3.1中被弃用,而在3.2中它已经消失了.