我想了解expandtabs()是如何工作的。
def expandtabs(string, n):
result = ""
pos = 0
for char in string:
if char == "\t":
# instead of the tab character, append the
# number of spaces to the next tab stop
char = " " * (n - pos % n)
if char == "\n":
pos = 0
else:
pos += len(char)
result += char
return result
input = "123\t12345\t1234\t1\n12\t1234\t123\t1"
print(expandtabs(input, 10))
我的问题是在输出的第一行,在打印123和7个空格后,是不是变量pos在循环12345之后会增加到8?为什么12345之后的空格不是2?
发布于 2018-06-05 20:00:52
pos
当一个制表符被扩展到几个空格时,该变量会被多次更新。在每个标签之后,pos
将始终是多个n
标签,因为这是标签设计工作的方式(它们总是让您碰到下一个标签)。
所以,以后'123\t'
你就必须pos
等于10,以后123\t12345
你就必须pos
等于15.你得到5个空间,从下一个标签,同时pos
为20。
https://stackoverflow.com/questions/-100001652
复制相似问题