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 = "123t12345t1234t1n12t1234t123t1">>> print(expandtabs(input, 10))123 12345 1234 112 1234 123 1
请注意,每个制表符(
"t")如何被替换为使其与下一个制表符对齐的空格数量。在这种情况下,因为我提供了,所以每10个字符都有一个制表位
n=10。



