Меня смущает, как вычисляется длина строки при использовании расширенных таблиц. Я подумал, что expandtabs заменяет табуляцию соответствующим количеством пробелов (по умолчанию количество пробелов на табуляцию равно 8). Однако, когда я запускал команды, используя строки различной длины и различного количества вкладок, вычисление длины отличалось от того, что я ожидал (т.е. каждая вкладка не всегда приводила к увеличению длины строки на 8 для каждого экземпляра из "/ т").
Ниже приведен подробный вывод сценария с комментариями, объясняющими то, что, по моему мнению, должно быть результатом команды, выполненной выше. Кто-нибудь, пожалуйста, объясните, как рассчитывается длина при использовании расширенных вкладок?
IDLE 2.6.5
>>> s = '\t'
>>> print len(s)
1
>>> #the length of the string without expandtabs was one (1 tab counted as a single space), as expected.
>>> print len(s.expandtabs())
8
>>> #the length of the string with expandtabs was eight (1 tab counted as eight spaces).
>>> s = '\t\t'
>>> print len(s)
2
>>> #the length of the string without expandtabs was 2 (2 tabs, each counted as a single space).
>>> print len(s.expandtabs())
16
>>> #the length of the string with expandtabs was 16 (2 tabs counted as 8 spaces each).
>>> s = 'abc\tabc'
>>> print len(s)
7
>>> #the length of the string without expandtabs was seven (6 characters and 1 tab counted as a single space).
>>> print len(s.expandtabs())
11
>>> #the length of the string with expandtabs was NOT 14 (6 characters and one 8 space tabs).
>>> s = 'abc\tabc\tabc'
>>> print len(s)
11
>>> #the length of the string without expandtabs was 11 (9 characters and 2 tabs counted as a single space).
>>> print len(s.expandtabs())
19
>>> #the length of the string with expandtabs was NOT 25 (9 characters and two 8 space tabs).
>>>