পাইথনে 3 টি জিনিস কিছুটা আলাদা তবে উপায় সহজ এবং ত্রুটিযুক্ত প্রবণ। এটা একটা ভাল ধারণা করা CSV আপনার ফাইল দিয়ে খোলা হবে বলতে এর utf8
, এনকোডিং যেমন যে ডেটা আরো অন্যদের কাছে পোর্টেবল তোলে (আপনি অভিমানী আরো একটি নিয়ন্ত্রণমূলক এনকোডিং ব্যবহার করছেন না, মত latin1
)
import csv
toCSV = [{'name':'bob','age':25,'weight':200},
{'name':'jim','age':31,'weight':180}]
with open('people.csv', 'w', encoding='utf8', newline='') as output_file:
fc = csv.DictWriter(output_file,
fieldnames=toCSV[0].keys(),
)
fc.writeheader()
fc.writerows(toCSV)
- দ্রষ্টব্য যে
csv
পাইথন 3 তে newline=''
প্যারামিটারের প্রয়োজন হয় , অন্যথায় আপনি এক্সেল / ওপেনক্যালক খোলার সময় আপনার সিএসভিতে ফাঁকা লাইন পান।
বিকল্পভাবে: আমি pandas
মডিউলটিতে সিএসভি হ্যান্ডলারের ব্যবহার পছন্দ করি । আমি দেখতে পেয়েছি এটি এনকোডিংয়ের বিষয়ে আরও সহনশীল এবং ফাইলটি লোড করার সময় পান্ডাগুলি স্বয়ংক্রিয়ভাবে সিএসভিতে স্ট্রিং নম্বরগুলি সঠিক টাইপ (ইনট, ফ্লোট, ইত্যাদি) এ রূপান্তর করবে।
import pandas
dataframe = pandas.read_csv(filepath)
list_of_dictionaries = dataframe.to_dict('records')
dataframe.to_csv(filepath)
বিঃদ্রঃ:
- পান্ডারা আপনার জন্য ফাইলটি খোলার যত্ন নেবে যদি আপনি এটিকে কোনও পথ দেন, এবং
utf8
পাইথন 3 এ ডিফল্ট হয়ে যাবে এবং শিরোনামগুলিও বের করে ফেলবে।
- সিএসভি আপনাকে যা দেয় তা ডেটাফ্রেম একই কাঠামো নয়, সুতরাং একই জিনিসটি পাওয়ার জন্য আপনি লোড করার পরে একটি লাইন যুক্ত করেন:
dataframe.to_dict('records')
- পান্ডাস আপনার সিএসভি ফাইলে কলামের ক্রম নিয়ন্ত্রণ করা আরও সহজ করে তোলে। ডিফল্টরূপে এগুলি বর্ণানুক্রমিক তবে আপনি কলামের ক্রম নির্দিষ্ট করতে পারেন। ভ্যানিলা
csv
মডিউল সহ, আপনাকে এটিকে একটি খাওয়ানো দরকার OrderedDict
বা এগুলি এলোমেলোভাবে ক্রম হিসাবে উপস্থিত হবে (যদি অজগর <3.5 এ কাজ করে থাকে)। দেখুন: পাইথন পান্ডাস ডেটা ফ্রেমে আরও কলামের অর্ডার সংরক্ষণ করা ।