- 论坛徽章:
- 0
|
把单行string里面的空格转换成tab的函数
- def unexpand(astring, tablen=8):
- import re
- # split into alternating space and non-space sequences
- pieces = re.split(r'( +)', astring.expandtabs(tablen))
- # keep track of the total length of the string so far
- lensofar = 0
- for i, piece in enumerate(pieces):
- thislen = len(piece)
- lensofar += thislen
- if piece.isspace( ):
- # change each space sequences into tabs+spaces
- numblanks = lensofar % tablen
- numtabs = (thislen-numblanks+tablen-1)/tablen
- pieces[i] = '\t'*numtabs + ' '*numblanks
- return ''.join(pieces)
复制代码
其中两行,不是太懂为什么要这么计算。
numblanks = lensofar % tablen
numtabs = (thislen-numblanks+tablen-1)/tablen
按照我的理解,下面这样就可以了。
numblanks = len(piece) % tablen
numtabs = len(piece) / tablen |
|