पायथन में, मैं एक प्रोग्राम लिखना चाहता हूं जो मेरी टेक्स्ट फ़ाइल से लाइनों को फ़िल्टर करता है जिसमें "सेब" शब्द होता है और उन पंक्तियों को एक नई टेक्स्ट फ़ाइल में लिखें। मैंने जो कोशिश की है वह सिर्फ मेरी नई टेक्स्ट फ़ाइल में "सेब" शब्द लिखती है, जबकि मुझे पूरी लाइन चाहिए। मैं पाइथन में एक नौसिखिया हूं, इसलिए कृपया मेरे प्रश्न का उत्तर दें, क्योंकि मुझे वास्तव में इसकी आवश्यकता है।पायथन: एक टेक्स्ट फ़ाइल से फ़िल्टर लाइनें जिसमें एक विशेष शब्द
8
A
उत्तर
16
उपयोग सभी लाइनों 'सेब' एक सूची-समझ का उपयोग करते हुए युक्त प्राप्त कर सकते हैं: - एक कोड लाइन में भी - तो
[ line for line in open('textfile') if 'apple' in line]
आप नए textfile बना सकते हैं:
open('newfile','w').writelines([ line for line in open('textfile') if 'apple' in line])
और eyquem सही है: यह पुनरावर्तक के रूप में रखना और लिखने के लिए निश्चित रूप से तेज है
open('newfile','w').writelines(line for line in open('textfile') if 'apple' in line)
1
if "apple" in line:
कार्य करना चाहिए।
8
from itertools import ifilter
with open('source.txt','rb') as f,open('new.txt','wb') as g:
g.writelines(ifilter(lambda line: 'apple' in line, f))
5
जनरेटर का उपयोग करना, इस स्मृति कुशल और तेजी से
def apple_finder(file):
for line in file:
if 'apple' in line:
yield line
source = open('forest','rb')
apples = apple_finder(source)
मैं :-)
+1
के साथ' if 'सेब' को प्रतिस्थापित कर सकते हैं। apple_finder (फ़ाइल) ** एक फ़ंक्शन जनरेटर है और ** सेब ** जनरेटर है। उत्तरार्द्ध एक ही काम करता है जैसे ** ifilter (लैम्ब्डा लाइन: लाइन में 'सेब', एफ) ** दो लाइनों में (आयात शामिल) – eyquem
संबंधित मुद्दे
- 1. पायथन: एक मॉड्यूल नामकरण जिसमें दो शब्द का नाम
- 2. पायथन: संपीड़ित पाठ फ़ाइलों से लाइनें पढ़ें
- 3. एक टेक्स्ट फ़ाइल को एक नई टेक्स्ट फ़ाइल में फ़िल्टर करें
- 4. शब्द फ़ाइल से नए शब्द
- 5. टेक्स्ट फ़ाइल से ग्राफ (पायथन)
- 6. मैं सी ++ में टेक्स्ट फ़ाइल से लंबी लाइनें कैसे पढ़ूं?
- 7. कमांड लाइन से टेक्स्ट फ़ाइल में अद्वितीय लाइनें कैसे खोजें?
- 8. फ़ाइल से खाली लाइनें हटाएं
- 9. पाइथन में एक टेक्स्ट फ़ाइल खोजें और संबंधित लाइनें मुद्रित करें?
- 10. एक पायथन सूची से आइटम चुनना जिसमें विशिष्ट इंडेक्स
- 11. सीएसएस: एक छवि फ़ाइल से एक विशेष आइकन प्रदर्शित करना
- 12. "खराब शब्द" फ़िल्टर
- 13. एक टेक्स्ट फ़ाइल
- 14. फ़ाइल में लाइनें जोड़ें
- 15. jquery - एक टेक्स्ट फ़ाइल पढ़ें?
- 16. टेक्स्ट से अधिकतम शब्द कैसे प्राप्त करें?
- 17. एक पायथन स्ट्रिंग में पहला शब्द निकालें?
- 18. वाई में एक फ़ाइल से यंक लाइनें (vim नहीं) दूसरे में?
- 19. सुअर: एक शब्द
- 20. नियमित अभिव्यक्ति जिसमें यूनिकोड शब्द
- 21. पायथन - एकाधिक थ्रेड से एक ही फ़ाइल में संलग्न
- 22. एक विशिष्ट शब्द से पहले और उसके बाद एक शब्द खोजने के लिए regex
- 23. BufferedReader: एक स्ट्रिंग में एकाधिक लाइनें पढ़ें
- 24. यूनिक्स में एक टेक्स्ट फ़ाइल से लाइनों को जोड़ना?
- 25. पायथन: एक "आयात फ़ाइल"
- 26. एक फ़ाइल लिखना जिसमें डिवाइस का नाम
- 27. अंतिम शब्द एक टेक्स्टव्यू
- 28. XPath एक तालिका पंक्ति का चयन करने के लिए जिसमें एक सेल है जिसमें निर्दिष्ट टेक्स्ट
- 29. पायथन में एक सहायता फ़ाइल के रूप में नोटपैड का उपयोग कर एक टेक्स्ट फ़ाइल खोलें?
- 30. सीएसवी फ़ाइल पढ़ना, जिसमें एक कॉलम
पढ़ने एक सूची समझ एक वस्तु बनाता है के लिए कोई मस्तिष्क क्षति के साथ आसान समाधान प्यार है। जनरेटर अभिव्यक्ति का उपयोग करना बेहतर होगा। जिस तरह से इसे लिखा जा सकता है, '' लाइन में लाइन 'के लिए लाइन (' टेक्स्टफाइल ') लाइन में' सेब ') '' – eyquem
@eyquem: ठीक है, मैं पूरी तरह से सहमत हूं कि - बड़ी फाइलों के लिए - यह होना चाहिए जनरेटर का उपयोग करने के लिए बेहतर, चूंकि एक जनरेटर आलसी व्यवहार करता है और इस प्रकार वह अधिक स्मृति का उपभोग नहीं करता है। लेकिन शायद छोटी फाइलों के लिए सूची-समझ तेजी से समाधान है? – phynfo
@Phynfo: नहीं ... जेनरेटर/इटरेटर्स के रूप में चीजों को रखने के लिए कहीं अधिक कुशल है। सूची समझ अभी भी इटरेटर बना रही है, जो तब एक सूची भर रही है, और एक बार उस सूची को उस लेखिका को पारित करने के बाद जो इसे एक पुनरावर्तक में बदल देती है। –