我有一个字符串str
,可能包含UTF-8字符。我想将它写入一个具有N个字节的确切长度的文件(可能包含填充)。因此,如果str
比那些N个字节长,则应将其切断,使其短于N个字节,然后用\0
个字节填充到N个字节。在python中有没有好/快的方法呢?
答案 0 :(得分:2)
您必须小心,不要在多字节序列的中间切断字节流。这似乎有效:
def fixlen (s, length):
bs = s.encode ('utf-8')
bs = bs [:length]
while True:
try:
bs.decode ('utf-8')
break
except UnicodeDecodeError:
bs = bs [:-1]
return bs + b'\0' * (length - len (bs) )
s = 'LLegó cigüeña'
for length in range (0, 20):
bs = fixlen (s, length)
print (s, bs, bs.decode ('utf-8') )