পাইথনে একটি স্পেস অনুসরণ করে কমা সহ একটি csv পড়ার সময় সতর্ক থাকুন৷

ব্যবসায়

পাইথনে, আপনি স্ট্যান্ডার্ড csv মডিউল ব্যবহার করে সহজে csv ফাইল পড়তে এবং লিখতে পারেন।

উদাহরণস্বরূপ, ধরুন আপনার কাছে নিম্নলিখিত csv, sample.csv আছে।

11,12,13,14
21,22,23,24
31,32,33,34

এই নিম্নরূপ পড়া যেতে পারে.

import csv

with open('data/src/sample.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)
# ['11', '12', '13', '14']
# ['21', '22', '23', '24']
# ['31', '32', '33', '34']

কমা পরে একটি স্থান আছে যখন আপনি এখানে সতর্কতা অবলম্বন করা প্রয়োজন. সাধারণত, কমা পরে কোন অপ্রয়োজনীয় স্পেস থাকা উচিত নয়, কিন্তু কখনও কখনও আমি তাদের মধ্যে স্পেস সহ ফাইল দেখতে পাই।

এই ধরনের ক্ষেত্রে, ডিফল্টরূপে, হোয়াইটস্পেস উপেক্ষা করা হয় না এবং ফাইলটি যেমন আছে তেমন পড়া হয়।

11, 12, 13, 14
21, 22, 23, 24
31, 32, 33, 34

অন্য কথায়, আপনি যদি উপরের ফাইলটি একটি কমা এবং একটি স্পেস দিয়ে পড়েন, তাহলে আউটপুটটি নিম্নরূপ হবে

with open('data/src/sample_space.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)
# ['11', ' 12', ' 13', ' 14']
# ['21', ' 22', ' 23', ' 24']
# ['31', ' 32', ' 33', ' 34']

আপনি যদি csv.reader-এ নিম্নলিখিতটি উল্লেখ করেন, কমা পরে স্পেস বাদ দেওয়া হবে।
skipinitialspace=True

with open('data/src/sample_space.csv', 'r') as f:
    reader = csv.reader(f, skipinitialspace=True)
    for row in reader:
        print(row)
# ['11', '12', '13', '14']
# ['21', '22', '23', '24']
# ['31', '32', '33', '34']

উপরের মত একটি সাধারণ উদাহরণে, আপনি সাদা স্থান অপসারণ করতে strip() ব্যবহার করতে পারেন। সমস্যা হল যখন এটি নিচের মত ডবল উদ্ধৃতি চিহ্ন দ্বারা বেষ্টিত হয়।

"one,one", "two,two", "three,three"

দ্বিগুণ উদ্ধৃতি চিহ্ন দ্বারা বেষ্টিত অংশটিকে একটি একক উপাদান হিসাবে গণ্য করা উচিত, তবে যদি skipinitialspace=False (ডিফল্ট) হয় তবে এটি নীচের মত দেখাবে।

with open('data/src/sample_double_quotation.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)
# ['one,one', ' "two', 'two"', ' "three', 'three"']

এটি skipinitialspace=True সেট করে করা যেতে পারে।

with open('data/src/sample_double_quotation.csv', 'r') as f:
    reader = csv.reader(f, skipinitialspace=True)
    for row in reader:
        print(row)
# ['one,one', 'two,two', 'three,three']

পান্ডাতে read_csv() সহ একটি csv ফাইল পড়ার সময় একই কথা সত্য। যদি csv ফাইলে কমা পরে একটি স্থান থাকে তবে আপনি নিম্নলিখিতগুলি করতে পারেন।
read_csv(skipinitialspace=True)