दिलचस्प पोस्ट
पायथन: उप-पैकेज या उप-मॉड्यूल आयात करना कैसे शुरू करने के लिए 'const std :: vector <T>' एसी सरणी की तरह पायथन सॉकेट डेटा की बड़ी मात्रा को प्राप्त करता है java.lang.ClassNotFoundException: पथ पर वर्ग नहीं मिला: dexpathlist विजुअल स्टूडियो "कोई सीपीयू" लक्ष्य क्या मतलब है? HttpServletRequest – सेटचरैक्टरइन्कोडिंग कुछ भी नहीं कर रहा है Django: सहेजे जाने पर, आप कैसे जांच सकते हैं कि कोई फ़ील्ड बदल गया है? असीमित रूप से jQuery के साथ छवियों को लोड करें डी 3 जावास्क्रिप्ट में चर गुंजाइश जब मैं "रन" कमांड को निष्पादित करता हूँ तो मैं कैसे उपयोग करता है डिफ़ॉल्ट पोर्ट (9000) को बदल सकता हूँ? जावा 8 में "फंक्शनल इंटरफ़ेस" की सटीक परिभाषा उत्पादन में इकाई फ़्रेमवर्क (कोड पहले) माइग्रेशन का उपयोग करना सूची में जोड़े गए अंतिम आइटम की मेरी प्रतियां क्यों शामिल है? PowerMock का उपयोग करने के लिए परीक्षण के लिए निजी विधि को कैसे नकल करें? LINQ आंतरिक-बनाम बायां-जुड़ें

\ N से छुटकारा पा रहा है जब .readlines ()

मेरे पास एक .txt फ़ाइल है जिसमें इसमें मान हैं I

मान इसी तरह सूचीबद्ध हैं:

Value1 Value2 Value3 Value4 

मेरा लक्ष्य मूल्यों को सूची में डालना है जब मैं ऐसा करता हूं, तो सूची इस प्रकार दिखती है:

['Value1\n', 'Value2\n', ...]

\n की आवश्यकता नहीं है

यहां मेरा कोड है:

 t = open('filename.txt', 'r+w') contents = t.readline() alist = [] for i in contents: alist.append(i) 

वेब के समाधान से एकत्रित समाधान "\ N से छुटकारा पा रहा है जब .readlines ()"

यह आपको करना चाहिए (एक सूची में फ़ाइल सामग्री, पंक्ति के बिना, बिना \ n)

 with open(filename) as f: mylist = f.read().splitlines() 

मैं यह करूँगा:

 alist = [line.rstrip() for line in open('filename.txt')] 

या:

 with open('filename.txt') as f: alist = [line.rstrip() for line in f] 

आप स्ट्रिंग के अंत से केवल नई लाइनें निकालने के लिए .rstrip('\n') का उपयोग कर सकते हैं:

 for i in contents: alist.append(i.rstrip('\n')) 

यह अन्य सभी सफेद स्थान को बरकरार छोड़ देता है यदि आप अपनी लाइनों के शुरू और अंत में सफेद स्थान की परवाह नहीं करते हैं, तो बड़ी भारी हथौड़ा को बुलाया जाता है। .strip()

हालांकि, जब से आप किसी फ़ाइल से पढ़ रहे हैं और हर चीज को स्मृति में खींच रहे हैं, str.splitlines() विधि का उपयोग करने के लिए बेहतर; यह लाइन विभाजक पर एक स्ट्रिंग को विभाजित करता है और उन विभाजकों के बिना लाइनों की एक सूची देता है; इसे file.read() पर file.read()file.read() परिणाम और file.readlines() उपयोग न करें। file.readlines() बिल्कुल भी:

 alist = t.read().splitlines() 

अपनी सूची में प्रत्येक स्ट्रिंग के लिए, .strip() उपयोग करें जो स्ट्रिंग की शुरुआत या अंत से सफेद स्थान को निकालता है:

 for i in contents: alist.append(i.strip()) 

लेकिन आपके उपयोग के मामले के आधार पर, यदि आप फ़ाइल से पढ़ रहे डेटा की एक अच्छी सरणी की ज़रूरत है, तो आप शायद कुछ जैसे numpy.loadtxt या numpy.loadtxt का उपयोग कर बेहतर हो सकते हैं।

 from string import rstrip with open('bvc.txt') as f: alist = map(rstrip, f) 

नोट rstrip() : rstrip() सफेद स्थान को हटा देता है, जिसका अर्थ है: \f , \n , \r , \t , \v , \x और खाली ,
लेकिन मुझे लगता है कि आप केवल लाइनों में महत्वपूर्ण अक्षरों को रखने में रुचि रखते हैं फिर, केवल map(strip, f) बेहतर फिट होगा, शीर्ष स्थान वाले सफेद स्थान को भी निकाल देगा


यदि आप वास्तव में केवल एनएल \n और आरएफ \r प्रतीकों को खत्म करना चाहते हैं, तो करें:

 with open('bvc.txt') as f: alist = f.read().splitlines() 

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

 with open('bvc.txt') as f: alist = f.read().splitlines(True) 

के रूप में एक ही प्रभाव है

 with open('bvc.txt') as f: alist = f.readlines() 

यह कहना है कि एनएल और आरएफ रखा जाता है

मुझे एक ही समस्या थी और मुझे निम्नलिखित समाधान बहुत कुशल होने के लिए मिला। मुझे उम्मीद है कि यह आपको या बाकी सबको मदद करेगा जो एक ही काम करना चाहता है

सबसे पहले, मैं "के साथ" कथन के साथ शुरू होगा क्योंकि यह फ़ाइल के उचित खुला / बंद सुनिश्चित करता है

यह कुछ इस तरह दिखना चाहिए:

 with open("filename.txt", "r+") as f: contents = [x.strip() for x in f.readlines()] 

यदि आप उन स्ट्रिंग्स को परिवर्तित करना चाहते हैं (सामग्री सूची में प्रत्येक वस्तु एक स्ट्रिंग है) पूर्णांक या फ्लोट में आप निम्न कार्य कर सकते हैं:

 contents = [float(contents[i]) for i in range(len(contents))] 

यदि आप पूर्णांक में कनवर्ट करना चाहते हैं तो float बजाय int उपयोग करें

यह मेरा पहला जवाब SO में है, इसलिए खेद है अगर यह उचित स्वरूपण में नहीं है।

मैंने हाल ही में एक फाइल से सभी लाइनों को पढ़ने के लिए इसका इस्तेमाल किया है:

 alist = open('maze.txt').read().split() 

या आप अतिरिक्त अतिरिक्त सुरक्षा के उस छोटे से उपयोग के लिए इसका उपयोग कर सकते हैं:

 with f as open('maze.txt'): alist = f.read().split() 

यह किसी एकल पंक्ति में पाठ के बीच में सफेद स्थान के साथ काम नहीं करता है, लेकिन ऐसा लगता है कि आपकी उदाहरण फ़ाइल में व्हाट्सएस बंटेटिंग वैल्यू नहीं हो सकती। यह एक सरल समाधान है और यह मूल्यों की एक सटीक सूची देता है, और खाली स्ट्रिंग नहीं जोड़ता है: '' हर खाली पंक्ति के लिए, जैसे फ़ाइल के अंत में एक नई पंक्ति

फ़ाइल खोलने के बाद, सूची की समझ एक पंक्ति में यह कर सकती है:

 fh=open('filename') newlist = [line.rstrip() for line in fh.readlines()] fh.close() 

बस बाद में अपनी फाइल को बंद करने के लिए याद रखना

 with open('D:\\file.txt', 'r') as f1: lines = f1.readlines() lines = [s[:-1] for s in lines] 

मैंने स्ट्रैप फ़ंक्शन का उपयोग नए रेखा से छुटकारा पाने के लिए के रूप में विभाजित लाइन 4 जीबी फाइल पर मेमोरी त्रुटियों को फेंक रहा था।

नमूना कोड:

 with open('C:\\aapl.csv','r') as apple: for apps in apple.readlines(): print(apps.strip()) 

ऐसा करने का सबसे आसान तरीका है file.readline()[0:-1] लिखना file.readline()[0:-1] यह अंतिम वर्ण को छोड़कर सब कुछ पढ़ा जाएगा, जो कि नई लाइन है