python 2.7 - Remove whitespaces from speciifc part of file -


कोड:

  खुले (फ़ाइल नाम) के साथ च : File_list = f.readlines () file_list = [file_list में पंक्ति के लिए line.strip ()] # प्रारंभ और समाप्ति टैग्स के बीच डेटा को प्रोसेस करने के लिए फ़ाइल कोड की प्रत्येक पंक्ति से सफेद स्थान निकालें (इन टैगों में सफेद स्थान हो सकते हैं इसलिए मैंने उन्हें हटा दिया है   

यह कोड मेरे लिए ठीक काम करता है लेकिन अगर फाइल बहुत बड़ी है तो मुझे नहीं लगता कि इसकी सूची में संपूर्ण डेटा की प्रतिलिपि बनाने के लिए इसकी समझदार स्थिति है

मैं सूची के विशिष्ट भाग के लिए सफेद स्थान कैसे निकाल सकता हूं ताकि केवल इतना हिस्सा मैं सूची में बचा सकता हूं?

मैंने कोशिश की :

  खुले (फ़ाइल नाम) के साथ f: फ़्रीलाइन () में पंक्ति के लिए: यदि line.strip () == "प्रारंभ": start = f.readlines.index ("प्रारंभ करें ") यदि line.strip () ==" end "end = f.readlines.index (" end ") file_list = f.readlines [start: end]   

लेकिन इसकी दे रही त्रुटि

  शुरू = f.readlines.index ("प्रारंभ") विशेषता: त्रुटि: 'bui Ltin_function_or_method 'ऑब्जेक्ट में कोई विशेषता नहीं है' इंडेक्स '  

मैं बस इस पोस्ट के शीर्ष पर उल्लेखित कोड का एक कुशल कोड लिखना चाहता हूं।

आपके कोड में समस्या यह है कि फाइल ऑब्जेक्ट f एक इटरेटर है, और एक बार जब आप कॉल करते हैं तो f.readlines () यह समाप्त हो गया है, इसलिए f.readlines () फिर से कॉल करने से एक लाइन के सूचक को ढूँढने में काम नहीं कर सकता इसके अलावा, readlines () सभी को फोन के केवल दिलचस्प हिस्सों को संग्रहीत करने के अपने प्रयासों को नकार देता है, क्योंकि readlines () पूरे इसके बजाय, बस याद रखें कि आपने पहले से ही लाइन शुरू कर ली है और सूची में निम्न पंक्तियां जोड़ें जब तक कि आप अंत-लाइन नहीं देखते।

 < कोड> खुले (फ़ाइल नाम) के रूप में एफ: शुरू, पंक्ति = गलत, [] पंक्ति के लिए f: stripped = line.strip () अगर छेड़छाड़ == "अंत": तोड़ता है अगर शुरू: लाइनों। छितना (छीन लिया) छीन लिया == "प्रारंभ": शुरू = सत्य   

वैकल्पिक रूप से, आप सभी लाइनों को अंत-लाइन तक प्राप्त करने के लिए भी उपयोग कर सकते हैं।

  आयात करें itertools के रूप में खुले (फ़ाइल नाम) के साथ: f में पंक्ति के लिए: यदि line.strip () == "प्रारंभ": पंक्ति = itertools.takewhile (लैंबडा l: l.strip ()! = "End", f) रेखा = नक्शा प्रारंभ लाइन से पहले लाइनों को पढ़ने (और त्यागने) करने के लिए (<स्ट्रिंग, लाइन) ब्रेक   

या उससे भी कम, दूसरे ताचलेख का उपयोग कर: <पूर्व> खुले साथ ("परीक्षण Txt ") के रूप में च: सूची (itertools.takewhile (लैम्ब्डा एल: l.strip ()! =" प्रारंभ ", च)) लाइन = itertools.takewhile (लैम्ब्डा एल: एल.स्ट्रिप ()! =" अंत ", एफ ) लाइनों = नक्शा (str.strip, लाइनें)

सभी मामलों में, लाइन शुरू- और अंत-लाइन के बीच (छिपी हुई) पंक्तियां रखती है, दोनों अनन्य।

Comments

Popular posts from this blog

ios - Adding an SKSpriteNode to SKScene from a child SKSpriteNode -

Matlab transpose a table vector -

c# - Textbox not clickable but editable -