सी ++ में हम getline() फ़ंक्शन में डिलीमिटिंग कैरेक्टर की अपनी पसंद देकर कई लाइनें दर्ज कर सकते हैं .. हालांकि मैं पाइथन में ऐसा करने में सक्षम नहीं हूं !! इसमें केवल raw_input() और sys.stdin.readline() विधियां हैं जो तब तक पढ़ती हैं जब तक मैं एंटर दबाता हूं। क्या इसे अनुकूलित करने का कोई तरीका है ताकि मैं अपना खुद का डिलीमीटर निर्दिष्ट कर सकूं?सी ++ गेटलाइन के पाइथन समकक्ष()
उत्तर
क्या आप अभी भी कई लाइनें बनाने के लिए एंटर दबा सकते हैं? आप इनपुट कैसे समाप्त करते हैं? या आप एक लाइन पर कई लाइनों को निर्दिष्ट करना चाहते हैं?
पूर्व, तो raw_input पाशन() जब तक कुछ लिखा है कि यह बताता है रोकने की कोशिश:
lines = []
while True:
user_input = raw_input()
if user_input.strip() == "": # empty line signals stop
break
lines.append(user_input)
या एक सीमांकक का उपयोग करके एकरेखीय पर कई पंक्तियों निर्दिष्ट करने के लिए:
lines = raw_input().split(";")
आप इस विधि को संशोधित करने और अपने प्रोग्राम में इसका उपयोग करने के लिए थोड़ा सा संशोधित करने का प्रयास कर सकते हैं।
पहले, linecache मॉड्यूल आयात:
import linecache
linecache मॉड्यूल आप किसी भी फ़ाइल से कोई भी लाइन का उपयोग करने की अनुमति देता है। इसके तीन तरीकों में से, जिसकी आप सबसे अधिक उपयोग करने की संभावना रखते हैं वह है।
linecache.getline('filename', line_number)
आप एक फ़ाइल 'myfile.txt' कहा जाता है और लाइन 138 से पढ़ने के लिए चाहते हैं, तो getline आप आसानी से ऐसा करने के लिए अनुमति देता है: getline के लिए वाक्य रचना इस प्रकार है।
retrieved_line = linecache.getline('myfile.txt', 138)
फिर आप फ़ाइल पर सर्जरी किए बिना लाइन 138 के डेटा को आसानी से प्रिंट कर सकते हैं या अन्यथा मैनिपुलेट कर सकते हैं।
thanx .. :-) –
आपको इस तरह के एक समारोह को लागू करने की आवश्यकता होगी। उदाहरण के लिए: उर सुझाव के लिए
def getline(stream, delimiter="\n"):
def _gen():
while 1:
line = stream.readline()
if delimiter in line:
yield line[0:line.index(delimiter)]
break
else:
yield line
return "".join(_gen())
import sys
getline(sys.stdin, ".")
यह भी है good..will जो एक मैं अंत में उपयोग करके देख सकते .... –
यह मेरी कारण सूट ठीक .. :-) –