Displaying posts tagged with

“re.split”

Python食谱-1.15.制表符(Tab)的扩展和收缩

原文作者:Alex Martelli, David Ascher 中文编译:Tony (digitalsatori) 问题 如何将字符串中的制表符(Tab)转换为一定数量的空格,或者反之。 解决方法 将制表符转换为几个空格是经常会碰到的工作,我们可以用Python字符串对象的 expandtabs 方法来轻松完成。因为字符串是‘不可变的’(immutable),这个方法实际上返回一个新的字符串,该字符串是原字符串的修改副本。我们可以将与原字符串绑定的变量重新绑定到新得到的字符串上: mystring = mystring.expandtabs() 以上代码并不改变mystring原本所指定的字符串,而是将mystring重新绑定到了一个 expandtabs 方法返回的新字符串,该新字符串扩展了所有原字符串中的制表符为指定数量的空格。默认情况下,制表符的宽度为8; 你也可以传递一个整数参数给expandtabs来自定义制表符的宽度。 将空格转变为tabs的情况是比较少见的,通常这种情况被称为,Tab的收缩。Python并没有提供一个内置的 unexpand 来处理将空格转换为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 [...]