2010-09-15 17 views
7

में बूलियन मानों को संग्रहीत करने और पुनर्प्राप्त करने का एक सुविधाजनक तरीका क्या है यदि मैं CSV मॉड्यूल का उपयोग करके एक बूलियन मान संग्रहीत करता हूं तो यह str() फ़ंक्शन द्वारा स्ट्रिंग्स 'ट्रू' या 'गलत' में परिवर्तित हो जाता है। हालांकि जब मैं उन मानों को लोड करता हूं, तो 'गलत' की एक स्ट्रिंग सही होने का मूल्यांकन करती है क्योंकि यह एक गैर-खाली स्ट्रिंग है।एक CSV फ़ाइल

मैं स्ट्रिंग के बारे में देखने के लिए आईएफ कथन के साथ पढ़ने के समय स्ट्रिंग को 'मैनुअल' द्वारा काम कर सकता हूं, लेकिन यह सुरुचिपूर्ण से कुछ हद तक कम है। कोई बेहतर विचार, या यह प्रोग्रामिंग दुनिया में उन चीजों में से एक है?

+0

"उन चीजों में से एक"? * क्या * चीजों में से एक? –

+0

निचले स्तर पर, पायथन बस ऐसा कर रहा होगा यदि आप जिस कथन के बारे में बात कर रहे हैं! – fjsj

+1

@ एसएलॉट: परेशान चीजें। @ एफजेएसजे: सच है लेकिन मैं आईएफ को देखने से छिपाना चाहता हूं। मुझे लगता है कि मुझे ऐसा करने का एक सुविधाजनक तरीका मिला है लेकिन मुझे आश्चर्य हुआ कि किसी और ने इस मुद्दे को मारा था। –

उत्तर

4

मुझे नहीं लगता कि यह पाइथन के csv मॉड्यूल के साथ संभव है। हालांकि ...

यह कहकर कि आप दोनों पाइथन से सीएसवी फ़ाइल लिखते हैं और पढ़ते हैं, आप किसी प्रकार के डेटा क्रमिकरण के लिए एक CSV फ़ाइल का उपयोग करने के लिए स्वीकार कर रहे हैं। आप ऐसा क्यों करना चाहते हो? पाइथन डेटा को क्रमबद्ध करने के लिए बहुत सारे विकल्प हैं, और सीएसवी फाइलों को आईएमएचओ को उन अन्य उपकरणों के साथ बातचीत के लिए आरक्षित किया जाना चाहिए, जिन्हें किसी कारण से उनकी आवश्यकता होती है।

+3

उपयोगकर्ताओं को पाइथन एप्लिकेशन या एक्सेल में डेटा को देखने और मैन्युअल रूप से करने में सक्षम होना चाहिए, दोनों के बीच काम आगे बढ़ने के साथ। –

+2

@ सिमॉन: क्या आप असली एक्सेल इंटरऑपरेबिलिटी प्रदान करते हैं या यह सिर्फ साधारण मूल्यों को संपादित करने के लिए है? यह कल्पना करना मुश्किल है कि आपके पायथन ऐप की तुलना में कुछ और जटिल है, इस मामले में आपको वास्तव में एक्सेल की आवश्यकता नहीं है, लेकिन कुछ पाइथन जीयूआई फ्रेमवर्क –

+0

के साथ बनाई गई एक साधारण संपादन योग्य तालिका में उपयोगकर्ताओं को डेटा प्रस्तुत कर सकते हैं मेरे पास एक टेबल व्यू है पायथन ऐप, लेकिन इस तरह के डेटा के लिए पूर्व-मौजूदा एक्सेल टूल हैं और डेटा के उपयोगकर्ता एक्सेल से परिचित होने की संभावना रखते हैं और इसका उपयोग करना चाहते हैं। इस तरह के डेटा के लिए पूर्व-मौजूदा डेटाबेस ऐप्स भी हैं और मुझे उनके साथ अंतःक्रियाशीलता का मार्ग भी प्राप्त करने में सक्षम होना चाहिए। सीएसवी मुझे एक उचित मध्यवर्ती प्रारूप होने लगता है। –

0

बूलियन को उनके int मानों में घुमाने के लिए int() फ़ंक्शन का उपयोग करें और फिर उनको स्टोर करें। कहा जा रहा है कि, ऊपर eli-bendersky की टिप्पणी ध्यान देने योग्य है।

+0

मैंने इसे माना, लेकिन सीएसवी फ़ाइल में संग्रहीत मूल्य मानव आंखों से आसानी से पारदर्शी होना चाहिए। अगर मैं इसे मशीन प्रसंस्करण के लिए संग्रहीत कर रहा था तो मैं एक सीएसवी फ़ाइल का उपयोग नहीं करूँगा और एली की टिप्पणी स्पॉट पर होगी। –

0

मुझे यकीन नहीं है कि अगर आपके अपने प्रश्न का उत्तर खराब फॉर्म है या नहीं, लेकिन यहां समाधान है जिसके साथ मैं आया हूं। यह मूल रूप से उस अजीब IF कथन को बंद करने के होते हैं, मैं एक समारोह में बात कर रहा था।

def setyesNo(value): 
    if value: return 'Yes' 
    else: return 'No' 

def checkYesNo(text): 
    if text == 'Yes': return True 
    else: return False 

फिर मेरे dictWriter में ऐसा करें।

for item in mylist: 
    writer.writerow({'Is Cool' : setYesNo(item.is_cool), 
         ..... 
         }) 

और dictReader में।

for line in reader: 
    item MyObject(is_Cool=checkYesNo(line['Is Cool']), 
        ..... 
       ) 
    mylist.append(item) 
संबंधित मुद्दे