2013-01-09 16 views
6

का उपयोग कर एक टैब अलग फ़ाइल पढ़ रहा है। मैं एक टैब अलग फ़ाइल पढ़ने के लिए निम्नलिखित का उपयोग कर रहा हूं। फ़ाइल में तीन कॉलम हैं, लेकिन जब मैं केवल कॉलम हेडर प्रिंट करता हूं तो पहला कॉलम अनदेखा किया जा रहा है। क्या मैं इसमें शामिल कर सकता हूं पहले कॉलम भीपाइथन डेलीमीटर

f = open("/tmp/data.txt") 
for l in f.readlines(): 
    print l.strip().split("\t") 
    break 
    f.close() 

आउटपुट: [ 'session_id \ t', '\ tevent_id_concat']

प्रथम स्तंभ नाम id जहां यह ऊपर सरणी में मुद्रित नहीं रहा है

EDIT

प्रिंट एल पैदावार निम्नलिखित

संपादित करें 1:

'id\tsession_id\tevent_id_concat\r\n' 

    Output: ['id\t', '\tevent_id_concat'] 
+0

यह काम करना चाहिए। क्या आप अपने 'प्रिंट' कथन से पहले 'प्रिंट एल' जोड़ सकते हैं और आउटपुट दिखा सकते हैं? अनुलेख इसके अलावा, यहां'readlines() 'की आवश्यकता नहीं है, हमेशा के रूप में काफी ज्यादा। –

+0

मैंने प्रिंट l – Rajeev

+0

दिया है क्या आप वास्तव में 'प्रिंट repr (l) 'के आउटपुट दिखा सकते हैं? – poke

उत्तर

6

यह काम करना चाहिए, लेकिन यह '' का उपयोग करने के लिए बेहतर है: अगर यह तो शायद ऐसा नहीं करता

with open('/tmp/data.txt') as f: 
    for l in f: 
     print l.strip().split("\t") 

आपकी फ़ाइल में आवश्यक प्रारूप नहीं है।

+0

लेकिन कैसे एक शब्द को 'स्ट्रिप' स्ट्रिप कर सकते हैं? –

+0

मॉड्यूल आधारित दृष्टिकोण को प्राथमिकता दी जानी चाहिए क्योंकि यह कई संभावित किनारे के मामलों को संभालती है –

14

मैं सीएसवी मॉड्यूल का उपयोग करने का सुझाव भी दूंगा। यदि आप सीएसवी जैसे प्रारूप (टैब/स्पेस/कुछ और सीमित) में संग्रहीत संरचनाओं जैसे टेबल में पढ़ना चाहते हैं तो इसका उपयोग करना आसान है और फिट बैठता है।

import csv 
with open('/tmp/data.txt', 'r') as f: 
    reader = csv.reader(f) 
    for row in reader: 
     print row 

हर पंक्ति एक सूची है जो बहुत उपयोगी है अगर आप सूचकांक आधारित जोड़तोड़ करना चाहता हूँ:

module documentation अच्छा उदाहरण हैं, जहां सबसे आसान उपयोग होने के लिए कहा गया है देता है।

यदि आप डेलीमीटर बदलना चाहते हैं तो इसके लिए एक कीवर्ड है लेकिन मैं अक्सर पूर्वनिर्धारित बोलीभाषाओं के साथ ठीक हूं जिसे किसी कीवर्ड के माध्यम से भी परिभाषित किया जा सकता है।

import csv 
with open('/tmp/data.txt', 'r') as f: 
    reader = csv.reader(f, dialect='excel', delimiter='\t') 
    for row in reader: 
     print row 

मुझे यकीन है कि अगर यह अपनी समस्याओं ठीक कर देंगे लेकिन सविस्तार मॉड्यूल का उपयोग आप यह सुनिश्चित करेंगे कि कुछ अपनी फ़ाइल साथ कुछ गड़बड़ है और नहीं अपने कोड है, तो त्रुटि रहेगा नहीं हूँ।

+0

'reader = csv.reader (f, dialect = 'excel', delimiter = '\ t') करने की कोई आवश्यकता नहीं है, वहां एक है 'एक्सेल-टैब' प्रारूप परिभाषित किया गया है ताकि आप 'एक्सेल' प्रारूप को ट्वीक करने के बजाय बस इसका उपयोग कर सकें: 'reader = csv.reader (f, dialect = 'excel-tab')' –