Chinaunix

标题: cookbok里面的一个例子,求解! [打印本页]

作者: aries1998    时间: 2008-04-19 00:24
标题: cookbok里面的一个例子,求解!
把单行string里面的空格转换成tab的函数

  1. def unexpand(astring, tablen=8):
  2.     import re
  3.     # split into alternating space and non-space sequences
  4.     pieces = re.split(r'( +)', astring.expandtabs(tablen))
  5.     # keep track of the total length of the string so far
  6.     lensofar = 0
  7.     for i, piece in enumerate(pieces):
  8.         thislen = len(piece)
  9.         lensofar += thislen
  10.         if piece.isspace( ):
  11.             # change each space sequences into tabs+spaces
  12.             numblanks = lensofar % tablen
  13.             numtabs = (thislen-numblanks+tablen-1)/tablen
  14.             pieces[i] = '\t'*numtabs + ' '*numblanks
  15.     return ''.join(pieces)
复制代码



其中两行,不是太懂为什么要这么计算。
numblanks = lensofar % tablen
numtabs = (thislen-numblanks+tablen-1)/tablen

按照我的理解,下面这样就可以了。
numblanks = len(piece) % tablen
numtabs = len(piece) / tablen




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2