有没有一种简单的方法可以让 utf8 编码字符串的子字符串,子字符串的 repr 长度在 python 中小于 N



例如我有一个字符串,我希望找到一种简单的方法来获得子字符串,其编码为utf-8,子字符串的报告长度为<= N,当然我可以尝试N/3子字符串并增加N/3+1, N/3+2,…,但是否有简单的方法?

word = u"this is a ship, and some other words".encode("utf-8")
#some way got a substring
substring = func(word, N)
#assert len(repr(substring)) <= N

谢谢!

一种可能的方法:

  1. 取整个字符串的第一个N-1字节。
  2. 检查最后3个字节,看看你是否打破了转义序列,并在必要时切断字节
  3. 添加引号,记住它可能是'"
  4. 将报告计算回utf-8。
  5. 检查最后几个字节,看看是否在Unicode码点的中间打断了字符串,并在必要时剪掉字节。可以通过检查位模式来区分前导字节和延续字节。

最新更新