有一个简单的方法来获得utf8编码字符串的子字符串,子字符串的repr的长度小于py中的N

时间:2013-04-28 16:08:03

标签: python algorithm utf-8 substring repr

例如我有一个字符串,我希望找到一个简单的方法来获取一个子字符串,其编码在utf-8中,并且子字符串的repr的长度是< = 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 个答案:

答案 0 :(得分:1)

可能的方法:

  1. 取整个字符串的repr的前N-1个字节。
  2. 检查最后3个字节,看看是否破坏了转义序列并在必要时删除了字节
  3. 附加引用,请注意它可能是'"
  4. 将回复评估为utf-8。
  5. 检查最后几个字节,看看是否在Unicode代码点中间断开了字符串,并在必要时删除了字节。您可以通过检查位模式来区分前导字节和连续字节。