2016-09-04 2 views
1

Скажем, у меня есть вход "Hello my name is \\n Bill"Как избавиться от множественных пробелов И счета для перевода строки

my_str = ' '.join(my_str.split()) 

Так что это будет присоединиться письма и дать мне "Hello my name is\nBill", когда я печатаю все это на одной строке. Я хочу, чтобы он печатался:

Hello my name is 
Bill 

к терминалу.

+2

какой? работает. –

ответ

2

Вы проблема в том, у вас нет новой строку символа, у вас есть два обратных косых черт и в n то есть обратной косых черт экранируются так после разделения вам нужно сделать замену:

In [10]: s = "Hello my name is \\n Bill" 

In [11]: print(" ".join(s.split())) 
Hello my name is \n Bill 

In [12]: print(" ".join(s.split()).replace("\\n","\n")) 
Hello my name is 
Bill 

Или использовать .decode («string_escape»):

In [15]: s = "Hello my name is \\n Bill" 

In [16]: print" ".join(s.split()) 
Hello my name is \n Bill 

In [17]: print(" ".join(s.split()).decode("string_escape")) 
Hello my name is 
Bill 

Как Kirby упоминалось в комментариях, если вы создаете строки не избежать обратной косой черты, если данные из другого источника используйте один из приведенных выше способов.

+1

Могу также упомянуть, что входная строка также может использовать только одну косую черту; если OP вручную указывает ввод, что может помочь прояснить ситуацию. – refi64