পাইথন 2 ব্যবহারের গ্রহণযোগ্য উত্তরে ascii -encoded এর বিপরীতে utf8 -encoded ফাইলটি পেতে :
import io, json
with io.open('data.txt', 'w', encoding='utf-8') as f:
f.write(json.dumps(data, ensure_ascii=False))
কোডটি পাইথন 3 এ আরও সহজ:
import json
with open('data.txt', 'w') as f:
json.dump(data, f, ensure_ascii=False)
উইন্ডোজে, এখনও encoding='utf-8'
যুক্তিটি open
প্রয়োজনীয়।
মেমরি (এর ফলাফলে ডেটার একটি এনকোডেড কপি সংরক্ষণ এড়াতে dumps
) এবং আউটপুট UTF8 এনকোডেড উভয় পাইথন 2 এবং 3, ব্যবহারে bytestrings:
import json, codecs
with open('data.txt', 'wb') as f:
json.dump(data, codecs.getwriter('utf-8')(f), ensure_ascii=False)
codecs.getwriter
পাইথন 3 এ কলটি রিডানড্যান্ট তবে পাইথন 2 এর জন্য প্রয়োজনীয়
পাঠযোগ্যতা এবং আকার:
এর ব্যবহার ensure_ascii=False
আরও ভাল পঠনযোগ্যতা এবং ছোট আকার দেয়:
>>> json.dumps({'price': '€10'})
'{"price": "\\u20ac10"}'
>>> json.dumps({'price': '€10'}, ensure_ascii=False)
'{"price": "€10"}'
>>> len(json.dumps({'абвгд': 1}))
37
>>> len(json.dumps({'абвгд': 1}, ensure_ascii=False).encode('utf8'))
17
আরও পতাকা যোগ করে পাঠযোগ্যতা উন্নতি indent=4, sort_keys=True
(যেমন দ্বারা প্রস্তাবিত dinos66 অফ আর্গুমেন্ট করার জন্য) dump
বা dumps
। এইভাবে আপনি কিছুটা বড় ফাইল আকারের দামে জসন ফাইলে একটি সুন্দর ইন্টেন্টেড সাজানো কাঠামো পাবেন।