Python String expandtabs()

The expandtabs() method returns a copy of string with all tab characters ‘\t’ replaced with whitespace characters until the next multiple of tabsize parameter.

The syntax of expandtabs() method is:

string.expandtabs(tabsize)

1. expandtabs() Parameters

The expandtabs() takes an integer tabsize argument. The default tabsize is 8.

2. Return Value from expandtabs()

The expandtabs() returns a string where all ‘\t’ characters are replaced with whitespace characters until the next multiple of tabsize parameter.

3. Example 1: expandtabs() With no Argument

str = 'xyz\t12345\tabc'

# no argument is passed
# default tabsize is 8
result = str.expandtabs()

print(result)

Output

xyz     12345   abc

3.1. How expandtabs() works in Python?

The expandtabs() method keeps track of the current cursor position.

The position of first ‘\t’ character in the above program is 3. And, the tabsize is 8 (if argument is not passed).

The expandtabs() character replaces the ‘\t’ with whitespace until the next tab stop. The position of ‘\t’ is 3 and the first tab stop is 8. Hence, the number of spaces after ‘xyz’ is 5.

The next tab stops are the multiples of tabsize. The next tab stops are 16, 24, 32 and so on.

Now, the position of second ‘\t’ character is 13. And, the next tab stop is 16. Hence, there are 3 spaces after ‘12345’.

4. Example 2: expandtabs() With Different Argument

str = "xyz\t12345\tabc"
print('Original String:', str)

# tabsize is set to 2
print('Tabsize 2:', str.expandtabs(2))

# tabsize is set to 3
print('Tabsize 3:', str.expandtabs(3))

# tabsize is set to 4
print('Tabsize 4:', str.expandtabs(4))

# tabsize is set to 5
print('Tabsize 5:', str.expandtabs(5))

# tabsize is set to 6
print('Tabsize 6:', str.expandtabs(6))

Output

Original String: xyz	12345	abc
Tabsize 2: xyz 12345 abc
Tabsize 3: xyz   12345 abc
Tabsize 4: xyz 12345   abc
Tabsize 5: xyz  12345     abc
Tabsize 6: xyz   12345 abc

4.1. Explanation

  • The default tabsize is 8. The tab stops are 8, 16 and so on. Hence, there is 5 spaces after ‘xyz’ and 3 after ‘12345’ when you print the original string.
  • When you set the tabsize to 2. The tab stops are 2, 4, 6, 8 and so on. For ‘xyz’, the tab stop is 4, and for ‘12345’, the tab stop is 10. Hence, there is 1 space after ‘xyz’ and 1 space after ‘12345’.
  • When you set the tabsize to 3. The tab stops are 3, 6, 9 and so on. For ‘xyz’, the tab stop is 6, and for ‘12345’, the tab stop is 12. Hence, there are 3 spaces after ‘xyz’ and 1 space after ‘12345’.
  • When you set the tabsize to 4. The tab stops are 4, 8, 12 and so on. For ‘xyz’, the tab stop is 4 and for ‘12345’, the tab stop is 12. Hence, there is 1 space after ‘xyz’ and 3 spaces after ‘12345’.
  • When you set the tabsize to 5. The tab stops are 5, 10, 15 and so on. For ‘xyz’, the tab stop is 5 and for ‘12345’, the tab stop is 15. Hence, there are 2 spaces after ‘xyz’ and 5 spaces after ‘12345’.
  • When you set the tabsize to 6. The tab stops are 6, 12, 18 and so on. For ‘xyz’, the tab stop is 6 and for ‘12345’, the tab stop is 12. Hence, there are 3 spaces after ‘xyz’ and 1 space after ‘12345’.