2016-03-18 2 views
-3

Я видел, как противоположное ответили несколько раз. Я использую вывод подпроцесса, и когда я печатаю вывод, он показывает \ n вместо фактического перехода к следующей строке.Как напечатать строку в Python с символами новой строки, переведенными в реальные новые строки?

out = subprocess(...) 
print (out) 

output >> 
some\ntext\nhere 

Что мне нужно

output >> 
some 
text 
here 

EDIT: "из" содержит комбинацию \ R в \ п-х и \ T.

+1

Что такое 'repr (out)'? Действительно ли он содержит, например, '\\ n'? – jonrsharpe

ответ

0
out = out.split('\n') 
for val in out: 
    print(val) 

Выход:

some 
text 
here 

Если вы \ г и \ т а

out = 'some\rtext\nhere' 
result = [] 
temp_str = '' 
for val in out: 
    if val.isalpha(): 
     temp_str+=val 
    else: 
     result.append(temp_str) 
     temp_str = '' 
if temp_str: 
    result.append(temp_str) 
for val in result: 
    print(val) 

Выход:

some 
text 
here 
+0

Спасибо. Это хорошее решение. Проблема в том, что строка имеет комбинацию из \ r и \ n и \ t ... Есть ли способ обработки всех специальных символов? Если нет, я могу жить с решением выше. – Arash

+0

@Arash: Обновлен мой ответ, чтобы включить ваше условие – YBathia

1

Я считаю, что текст является сырым кодированный. Попробуйте метод replace внизу и посмотрите, работает ли это.

# Works fine for string. 
out = 'some\ntext\nhere' 

>>> print(out) 
some 
text 
here 

# Works fine for unicode. 
out = u'some\ntext\nhere' 

>>> print(out) 
some 
text 
here 

>>> repr(out) 
"u'some\\ntext\\nhere'" 

# Doesn't work for raw. 
out = r'some\ntext\nhere' 

>>> print(out) 
some\ntext\nhere 

>>> repr(out) 
"'some\\\\ntext\\\\nhere'" 

# Try this. 
print(out.replace('\\n', '\n')) 
some 
text 
here 
Смежные вопросы