एक सीएसवी को अल्पविराम के साथ पढ़ते समय सावधान रहें, उसके बाद पायथन में एक स्थान

व्यापार

पायथन में, आप मानक सीएसवी मॉड्यूल का उपयोग करके सीएसवी फाइलों को आसानी से पढ़ और लिख सकते हैं।

उदाहरण के लिए, मान लें कि आपके पास निम्न 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']

ऊपर वाले की तरह एक साधारण उदाहरण में, आप व्हाइटस्पेस को हटाने के लिए स्ट्रिप() का उपयोग कर सकते हैं। समस्या तब होती है जब यह निम्नलिखित जैसे दोहरे उद्धरण चिह्नों से घिरा होता है।

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

दोहरे उद्धरण चिह्नों से घिरे भाग को एक ही तत्व के रूप में माना जाना चाहिए, लेकिन यदि स्किपइनिशियलस्पेस=गलत (डिफ़ॉल्ट) है, तो यह निम्न जैसा दिखेगा।

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"']

यह स्किपिनिशियलस्पेस = ट्रू सेट करके किया जा सकता है।

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 फ़ाइल में अल्पविराम के बाद स्थान है, तो आप निम्न कार्य कर सकते हैं।
read_csv(skipinitialspace=True)