2016-03-18 11 views
-3

Bunun tam tersini birden çok kez yanıtladım. Alt işlem çıktısını kullanıyorum ve çıktıyı yazdırdığımda \ n yerine aslında bir sonraki satıra gidiyorum. Ben gerekenlerPython'daki bir dizeyi, yeni satır karakterlerini gerçek yeni satırlara dönüştürerek nasıl yazdırabilirim?

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

output >> 
some\ntext\nhere 

output >> 
some 
text 
here 

DÜZENLEME şudur: "out" \ r '\ n en ve \ t yılların bir arada içermektedir.

+1

'repr (out)' nedir? Aslında, ör. 'N' \\? – jonrsharpe

cevap

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

Çıktı:

some 
text 
here 

Eğer \ varsa r ve \ t yanı

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) 

Çıktı:

some 
text 
here 
+0

Teşekkürler. Bu iyi bir çözümdür. Sorun, dizenin \ r's ve \ n's ve \ t 'nin bir kombinasyonudur. Tüm özel karakterleri işlemek için bir yol var mı? Eğer değilse, yukarıdaki çözümle yaşayabilirim. – Arash

+0

@Arash: Durumumu dahil etmek için yanıtımı güncelledi – YBathia

1

Ben metin ham kodlanmış olduğuna inanıyoruz. En alttaki replace yöntemini deneyin ve işe yarayıp yaramadığını görün.

# 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 
İlgili konular