2016-03-18 16 views
-3

私はこれとは逆のことを何回も見てきました。私はサブプロセスの出力を使用しています。出力を印刷すると、実際に次の行に行く代わりに\ nが表示されます。私は必要なものPythonで改行文字を実際の改行に変換して文字列を印刷するにはどうしたらいいですか?

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

output >> 
some\ntext\nhere 

output >> 
some 
text 
here 

EDITです: "アウト" \ rをの\ n個のと\トン年代の組み合わせが含まれています。

+1

'repr(out)とは何ですか?それは実際には例えば'\\ n'? – jonrsharpe

答えて

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

出力:

some 
text 
here 

あなたは\している場合は、rと\トンにも

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 
関連する問題