Python f строка по-разному обрабатывает новую строку между терминалом и jupyter - PullRequest
1 голос
/ 16 октября 2019

У меня есть функция для распечатки формата информации об аудиоустройстве в таблицу типа f string.

Это пример:

line1 = (f"ID {'Device Name':25}{'INP':4}{'OUT':4}   SR   INP-(Lo|Hi)  OUT-(Lo/Hi) (Latency in ms)")
lines = [line1]

p1 = f"{0:<4g}{'INPUT':24}{'1':4}{'2':4}"
p2 = f"{'44100'}"
p3 = f"{'4.21'} {'10.33'}"
p4 = f"{'3.3'} {'6.6'}"
lines.append(p1 + p2 + p3 + p4)

В jupyter print(lines) выглядит хорошо с:

ID Device Name              INP OUT    SR   INP-(Lo|Hi)  OUT-(Lo/Hi) (Latency in ms)
0   INPUT                   1   2   441004.21 10.333.3 6.6

Но в терминале print(lines) становится одной длинной строкой.

['ID Device Name              INP OUT    SR   INP-(Lo|Hi)  OUT-(Lo/Hi) (Latency in ms)', '0   INPUT                   1   2   441004.21 10.333.3 6.6']

Мне пришлось присоединиться к новой строке, чтобы разорвать строку с:

lines = "\n".join(lines)

Как я могу иметь последовательную распечатку как в терминале, так и в jupyter? Большое спасибо

Ответы [ 2 ]

2 голосов
/ 16 октября 2019

есть оператор для такого вида печати в python3 (не уверен насчет python2), который стоит перед списком

print(*lines, sep='\n')
1 голос
/ 16 октября 2019

, потому что вы не используете команду печати в jupyter. если вы хотите получить одинаковый вывод с помощью команды печати как в jupyter, так и в консоли, попробуйте это:

  from IPython.display import display, HTML
  display(lines)

или

  display(HTML(lines.to_html()))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...