Не удается получить ожидаемый результат от str.expandtabs () - PullRequest
0 голосов
/ 21 февраля 2020

Сегодня я тестировал str.expandtab (), похоже, результат тестирования не такой, как ожидалось.
Возьмите приведенный ниже пример, строка 'ihrianrnka' после '\ n' не была напечатана.
Может кто-нибудь объяснить это?
TIA

Python 3.6.9 (default, Nov  7 2019, 10:44:02) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.  
>>> str = 'a\tbio\tpojfknPIjer\tiojoanf\nihrianrnka\riahfi\tann'  
>>> print(str.expandtabs(10))  
a         bio       pojfknPIjer         iojoanf  
iahfi     ann  

1 Ответ

1 голос
/ 21 февраля 2020

Так что проблема на самом деле не в \n или в строке после нее. Проблема в \r после ihrianrnka.

\r означает возврат каретки в Windows. Это удержание со времен DOS.

\n означает новую строку в Windows и Linux.

Так что в Linux вам просто нужно \n для новой строки. Для Windows внутренняя работа программного обеспечения \r\n, но для совместимости он будет обрабатывать \n. Однако \r не обрабатывается изящно.

Чтобы исправить вашу строку, вам нужно сделать следующее:

str = 'a\tbio\tpojfknPIjer\tiojoanf\nihrianrnka\riahfi\tann'
str = str.replace("\r", "\n")
print(str.expandtabs(10))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...