Python字符串expandtabs()

时间:2020-02-23 14:43:25  来源:igfitidea点击:

Python字符串expandtabs()函数返回一个新的字符串,其中的制表符(\ t)替换为一个或者多个空格。

Python字符串expandtabs()

该函数语法为:

str.expandtabs(tabsize=8)

我们可以指定tabsize参数来指定扩展制表符时要使用的空格数。
tabsize参数的默认值为8。

Python将在找到制表符之前考虑存在的字符。
要使用的空格数等于制表符大小减去制表符前的字符数。

如果字符数大于制表符的大小,则使用制表符的下一个倍数,即8,16,24,依此类推。

如果要替换多个制表符,则仅计算制表符之前的字符,直到到达前一个制表符为止。

Python字符串expandtabs()示例

让我们来看一个expandtabs()函数的简单示例。

s = 'A\tB\tC\tD'

print(s.expandtabs())

# Output:
# A       B       C       D

请注意,每个制表符之前只有一个字符,因此使用7个空格替换制表符。

让我们看另一个示例,在制表符之前添加更多字符。

s = 'ABCD\tE\tF'

print(s.expandtabs())

# Output:
# ABCD    E       F

第一个制表符前面有4个字符,因此使用8-4 = 4空格扩展制表符。

对于第二个制表符,前面只有1个字符,因此使用8-1 = 7空格来扩展制表符。

让我们看另一个示例,其中制表符前的字符数大于制表符大小。

s = 'ABCDEFGHIJK\tG'
print(s.expandtabs())

# Output: 
# ABCDEFGHIJK     G

选项卡前有11个字符,因此使用8 * 2-11 = 5空格来扩展选项卡。

让我们看看这种情况的另一个示例。

s = 'ABCDEFGHIJK\t\tG'
print(s.expandtabs())

# Output:
# ABCDEFGHIJK             G

第一个选项卡扩展为8 * 2-11 = 5个空格,而第二个选项卡扩展为8-0 = 8个空格。
这就是为什么输出字符串中有13个空格的原因。

带有tabsize的Python字符串expandtabs()

让我们看一些带有可变tabsize的示例。

s = 'ABC\tD'
print(s)
print(s.expandtabs())
print(s.expandtabs(tabsize=0))
print(s.expandtabs(tabsize=1))
print(s.expandtabs(tabsize=2))
print(s.expandtabs(tabsize=3))
print(s.expandtabs(tabsize=4))
print(s.expandtabs(tabsize=5))
print(s.expandtabs(tabsize=6))
print(s.expandtabs(tabsize=7))

只要遵循上述规则,您就可以轻松理解输出。

我们可以为Tabsize指定一个负值吗?让我们用一个简单的代码片段进行检查。

s = 'ABC\tD'
print(s.expandtabs(tabsize=-1))
print(s.expandtabs(tabsize=-3))

输出:

ABCD
ABCD

很明显,当提供负的tabsize值且不会引发任何错误时,Python会将tabsize设为0。