python - Limiting the searching of a large file -
तो यहां कुछ नया संशोधनों के साथ मेरा कार्यक्रम है:
datafile = open ('C : \\ text2.txt ',' r ') fullataset = open (' C: \\ bigfile.txt ',' r ') smalldataset = open (' C: \\ smalldataset.txt ',' w ') मिलान किए गए पंक्तियाँ = डेटाफाइल में पंक्ति के लिए: splitline = line.split () को आंशिक रूप में आइटम के लिए: यदि मद नहीं है, तो। ("नोवा"): यदि item.startswith ("JJJ") या item.startswith ("KOS"): मिलान किए गए लाइन । पूरा आइटम में पंक्ति के लिए एपेंड (आइटम) काउंटर = 1: प्रिंट काउंटर काउंटर + = 1 मिलान के लिए टी में: यदि टी पंक्ति में: smalldataset.write (line) datafile.close () fullataset.close () smalldataset.close ()
मुझे अब जो समस्या है वो है कि मैं "बड़ाफ़ाइल" के माध्यम से खोजना चाहता हूं लेकिन तेज दर पर। मैं बड़ी लाइन में लाइन की खोज को स्ट्रिंग में सीमित करना चाहूंगा, जो पहले ','
से पहले होती है, मैं कुछ जैसे इंडेक्स = aString.find (',') का उपयोग करना चाहता हूं, लेकिन I बड़ी किस्मत नहीं है बड़ी फ़ाइल की स्ट्रिंग में खोज को सीमित करता है जो पहले अल्पविराम से पहले होता है
आप बदल सकते हैं
यदि लाइन में टी: से
यदि पंक्ति में [: line.find (',')]:
यह कर सकता है प्रोग्राम तेजी से अगर लाइन
बहुत लंबा है और शुरुआत के निकट अल्पविराम दिखाई देता है या यह प्रोग्राम धीमा कर सकता है यदि ,
को लाइन
के अंत में दिखाई देता है।
PS। क्या हर लाइन
इसमें अल्पविराम रखने की गारंटी है? यदि कोई अल्पविराम नहीं है तो उपरोक्त कोड थोड़ा कायरता दिखाता है उदाहरण के लिए,
में [21]: पंक्ति = 'पाठ की एक पंक्ति' में [22]: पंक्ति [: line.find (',')] बाहर [22]: 'a यदि आप अल्पविराम के बिना लाइनों को अनदेखा करना चाहते हैं, तो यह बेहतर हो सकता है: में [23]: रेखा [: रेखा। ढूंढें (',') + 1] आउट [23]: ''
Comments
Post a Comment