问答题 3.  编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,例如"人ABC"4,应该截为"人AB",输入"人ABC们DEF",6,应该输出为"人ABC"而不是"人ABC+们的半个"。
【正确答案】在Python2.7语言中,在开头声明encoding为utf8,一个中文占3个字节。本题先将中文转成unicode编码,便于识别是否是中文,再根据字符长度进行截取。根据这个思路,可以采用如下代码来满足题目的要求:
   #判断字符c是否是中文字符, 如果是返回True
   def isChinese(c):
   return True if c>=u'\u4e00' and c<=u'\u9fa5' else False
   def truncateStr(strs,lens):
   if (strs==None or strs==""or lens==0):
   return ""
   #chrArr=list(strs)
   chrArr=strs
   sb=""
   count=0 #用来记录当前截取字符的长度
   for cc in chrArr:
   if (count<lens):
   
   #print sb,count
   if (isChinese(cc)):
   #如果要求截取予串的长度只差1个或者2个字符, 但是接下来的字符是中文,
   #那么截取结果子串中不保存这个中文字符
   if count+1<=lens and count+3>lens:
   return sb
   count=count+3
   sb=sb+cc
   else:
   count=count+1
   sb=sb+cc
   else:
   break
   return sb
   if __name__=="__main__":
   sb="人 ABC们DEF"
   sb_unicode=unicode(sb,'utf8') #转成unicode编码
   print truncateStr(sb_unicode,6)
   程序的运行结果为:
   人ABC
【答案解析】[考点] 如何截取包含中文的字符串