2013-09-27 15 views
5

Python (2.7) kullanarak json'a dönüştürmeye çalıştığım bir boru sınırlandırılmış dosyam var. Kod, metin dosyasını okur, sınırlayıcıya göre dönüştürür ve sonra json'a dönüştürür.Python'daki Json yazdırma çıktısı kaçan karakterlerden dolayı yazma çıktısından farklı

Kodu çalıştırdığımda, terminal penceremdeki çıktı doğrudur. Ancak, bir dosyaya yazdığımda çıkışa kaçış eğik çizgi ekleniyor. Çıkış dosyasının başlangıcına ve sonuna hiç bir çıkışsız tırnak işareti eklenir.

Diğer yanıtlara dayanarak json dökümüyle uğraştığımda her zaman false değerini emin olmaya çalıştım. Ama bu işe yaramıyor.

girdi.txt:

392|0|9 

Kodu: terminalde

import csv 
import json 

f = open('input.txt', 'rU') 
reader = csv.DictReader(f, fieldnames = ("A", "B", "C"), delimiter='|') 
out = json.dumps([ row for row in reader ], ensure_ascii=False) 
print out 
with open('data.json', 'w') as outfile: 
    json.dump(out, outfile, ensure_ascii=False) 

Çıkış:

"[{\"A\": \"392\", \"C\": \"9\", \"B\": \"0\"}]" 
: Data.JSON içinde

[{"A": "392", "C": "9", "B": "0"}] 

Çıkış

Python’da yeni. Tırnak işaretlerini (başlangıç ​​ve bitişte) ve eğik çizgileri .json dosyasından kaldırmak için ne yapabilirim?

cevap

9

Verilerinizi iki kez numaralı JSON kodluyorsunuz. outzaten JSON kodlanmış, ancak JSON dizesini outfile'a dökerek tekrar kodlayın.

Sadece tekrar kodlama olmadan yazmak:

with open('data.json', 'w') as outfile: 
    outfile.write(out) 

sonra uygun bir codec'i onları kodlamak için gerektirecektir unicode değerlerini üretecek json.dumps() olarak, ensure_ascii=False seçeneği kaldırıyor musunuz (okuma, bir Dosyaya yazarken UTF türevlerinin).

+0

Teşekkür ederiz. Bu mükemmel bir anlam ifade ediyor. Değişiklikleriniz sorunu çözdü. – lucastimmons

İlgili konular