str.expandtabs(n)
不等同于str.replace("\t", " " * n)
。
str.expandtabs(n)
跟踪每行上的当前光标位置,并用从当前光标位置到下一个制表位的空格数替换找到的每个制表符。制表位被视为每个n
字符。
这是制表符工作方式的基础,而不是特定于Python。
string.expandtabs(n)
等效于:
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)
pos = 0
elif char == "\n":
pos = 0
else:
pos += 1
result += char
return result
并举例说明:
>>> input = "123\t12345\t1234\t1\n12\t1234\t123\t1"
>>> print(expandtabs(input, 10))
123 12345 1234 1
12 1234 123 1
请注意,每个制表符("\t"
)如何被替换为使其与下一个制表符对齐的空格数量。在这种情况下,因为我提供了,所以每10个字符都有一个制表位n=10
。