Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन सिंटैक्सएरर: EOL while scanning string literal समाधान

सर्वश्रेष्ठ डेवलपर्स भी कोडिंग करते समय हर समय सिंटैक्स त्रुटियां करते हैं। प्रोग्रामिंग भाषाओं में इतने सारे नियम होते हैं कि एक टाइपो भी त्रुटि का कारण बन सकता है।

यदि आप "सिंटैक्सएरर: EOL while scanning string literal" त्रुटि का सामना कर चुके हैं, तो चिंता न करें। इस गाइड में, हम बात करेंगे कि इस त्रुटि का क्या अर्थ है और इसे कैसे हल किया जाए। हम कुछ उदाहरण परिदृश्यों से गुजरेंगे ताकि आप संभावित कारणों और समाधानों की पहचान कर सकें।

समस्या: syntaxerror: EOL while scanning string literal

सिंटैक्स एक प्रोग्रामिंग भाषा का व्याकरण है। अंग्रेजी में विराम चिह्न और वर्तनी को नियंत्रित करने वाले नियम होते हैं; प्रोग्रामिंग भाषाओं में समान नियम होते हैं।

आइए हमारी त्रुटि पर एक नज़र डालें:

syntaxerror: EOL while scanning string literal

SyntaxError संदेश हमें बताता है कि हमने पायथन के सिंटैक्स नियमों का पालन नहीं किया है।

त्रुटि का विवरण इंगित करता है कि पायथन कोड की एक पंक्ति के अंत तक एक विशेष वर्ण की अपेक्षा कर रहा है जो नहीं मिला। उदाहरण के लिए, पायथन एक स्ट्रिंग क्लोज (") वर्ण की अपेक्षा कर सकता है उस पंक्ति के अंत तक जिसमें आपने एक स्ट्रिंग खोली है।

यदि एक सिंटैक्स त्रुटि का सामना किया जाता है, तो पायथन प्रोग्राम को निष्पादित करना बंद कर देता है। ऐसा इसलिए है क्योंकि पायथन इंटरप्रेटर को शेष कोड पढ़ने से पहले आपके द्वारा समस्या को ठीक करने की आवश्यकता होती है।

यह त्रुटि आमतौर पर निम्न कारणों से होती है:

  • गलत सिंटैक्स का उपयोग करके कई पंक्तियों में फैले स्ट्रिंग्स
  • कोटेशन मार्क्स गायब होना
  • मिसमैचिंग कोटेशन मार्क्स

उदाहरण परिदृश्य: मल्टी-लाइन स्ट्रिंग्स

पायथन में, स्ट्रिंग्स कई पंक्तियों में फैल सकते हैं। मल्टी-लाइन स्ट्रिंग का सिंटैक्स पारंपरिक स्ट्रिंग से अलग होता है। मल्टी-लाइन स्ट्रिंग्स ट्रिपल कोटेड होने चाहिए, या तीन कोटेशन मार्क्स का उपयोग करके लिखे जाने चाहिए।

आइए एक मल्टी-लाइन स्ट्रिंग पर नज़र डालते हैं:

def welcome_hero():
    message = "Welcome, Hero! You have just entered the Castle of Doom. Your challenge, should you choose to accept it, is to locate the Sacred Emerald and take it back to the travelling salesman."
    print(message)

welcome_hero()

हमने welcome_hero() नामक एक फ़ंक्शन परिभाषित किया है। यह फ़ंक्शन कंसोल पर एक संदेश प्रिंट करता है। यह संदेश "message" वेरिएबल को असाइन किया गया है।

आइए अपना कोड चलाने का प्रयास करते हैं:

File "main.py", line 2
    message = "Welcome, Hero!
    ^
SyntaxError: EOL while scanning string literal

एक त्रुटि लौटाई गई। ऐसा इसलिए है क्योंकि सिंगल या डबल कोट्स का उपयोग करने वाला स्ट्रिंग कई पंक्तियों में नहीं फैल सकता। इस समस्या को हल करने के लिए, हमें अपने स्ट्रिंग को तीन सिंगल या डबल कोट्स के साथ संलग्न करने की आवश्यकता है। इन वर्णों के बीच दिखाई देने वाला कोई भी टेक्स्ट स्ट्रिंग का हिस्सा होगा:

message = """Welcome, Hero! You have just entered the Castle of Doom. Your challenge, should you choose to accept it, is to locate the Sacred Emerald and take it back to the travelling salesman."""

आइए इस संशोधित पंक्ति के साथ अपना कोड चलाने का प्रयास करें। हमारा कोड लौटाता है:

Welcome, Hero! You have just entered the Castle of Doom. Your challenge, should you choose to accept it, is to locate the Sacred Emerald and take it back to the travelling salesman.

सफलता! हमारा कोड बिना त्रुटि के संदेश प्रिंट करता है।

उदाहरण परिदृश्य: गायब कोटेशन मार्क

स्ट्रिंग्स के कंटेंट घोषित होने के बाद बंद होने चाहिए। अन्यथा, पायथन एक सिंटैक्स त्रुटि लौटाता है। आइए एक ऐसे स्ट्रिंग पर नज़र डालते हैं जो बंद नहीं है:

def welcome_hero():
    message = "Welcome, Hero!
    print(message)

welcome_hero()

आइए अपना कोड चलाते हैं:

File "main.py", line 2
    message = "Welcome, Hero!
    ^
SyntaxError: EOL while scanning string literal

हम अपना स्ट्रिंग बंद करना भूल गए। यदि आप उस कोड की पंक्ति को देखें जहां हम "message" वेरिएबल घोषित करते हैं, तो कोई क्लोजिंग स्ट्रिंग वर्ण नहीं है।

हम इस त्रुटि को अपने स्ट्रिंग को उसी कोटेशन मार्क का उपयोग करके बंद करके ठीक कर सकते हैं जिसका उपयोग हमने अपना स्ट्रिंग खोलने के लिए किया था।

def welcome_hero():
    message = "Welcome, Hero!"
    print(message)

welcome_hero()

आइए अपना कोड फिर से चलाते हैं:

Welcome, Hero!

हमारा कोड सफलतापूर्वक चलता है।

उदाहरण परिदृश्य: मिसमैचिंग कोटेशन मार्क्स

स्ट्रिंग खोलने के लिए आपके द्वारा उपयोग किए जाने वाले कोट का प्रकार वही होना चाहिए जो आप स्ट्रिंग बंद करने के लिए उपयोग करते हैं।

जब आपके द्वारा स्ट्रिंग खोलने और बंद करने के लिए उपयोग किए जाने वाले कोट्स के प्रकार भिन्न होते हैं, तो एक सिंटैक्स त्रुटि लौटाई जाती है। आइए एक ऐसे प्रोग्राम पर नज़र डालते हैं जो सिंगल कोट मार्क (') का उपयोग करके एक स्ट्रिंग खोलता है और डबल कोट मार्क (") का उपयोग करके स्ट्रिंग बंद करता है:

def welcome_hero():
    message = 'Welcome, Hero!"
    print(message)

welcome_hero()

हमारा कोड लौटाता है:

File "main.py", line 2
    message = 'Welcome, Hero!"
    ^
SyntaxError: EOL while scanning string literal

हम अपने कोटेशन को मैच करके इस समस्या को ठीक कर सकते हैं। हम अपने पहले कोटेशन मार्क को डबल कोट्स (") का उपयोग करने के लिए बदलने जा रहे हैं:

def welcome_hero():
    message = "Welcome, Hero!"
    print(message)

welcome_hero()

हमारा कोड अब सफलतापूर्वक चलता है: Welcome, Hero!

निष्कर्ष

"सिंटैक्सएरर: EOL while scanning string literal" त्रुटि हर पायथन डेवलपर द्वारा अनुभव की जाती है। यह त्रुटि तब होती है जब:

  • आप एक स्ट्रिंग बंद करना भूल जाते हैं
  • आप गलत प्रतीक का उपयोग करके एक स्ट्रिंग बंद करते हैं
  • आप एक मल्टी-लाइन स्ट्रिंग को एक कोटेशन मार्क के बजाय तीन का उपयोग करके घोषित करते हैं

इस त्रुटि को हल करने के लिए, जांचें कि क्या उपरोक्त में से कोई भी शर्त सत्य है। फिर, अपने कोड में आवश्यक परिवर्तन करें। अब आप इस त्रुटि को एक पायथन विशेषज्ञ की तरह हल करने के लिए तैयार हैं!

  1. - पायथन में स्ट्रिंग उल्टा करें

    मान लीजिए हमारे पास वर्णों की एक सरणी है। हमें बिना किसी अतिरिक्त स्थान का उपयोग किए स्ट्रिंग को उल्टा करना है। यदि स्ट्रिंग [H, E, L, L, O] जैसी है, तो आउटपुट [O, L, L, E, H] होगा। इसे हल करने के लिए हम इन चरणों का पालन करेंगे: दो पॉइंटर्स लें start = 0 और end = स्ट्रिंग की लंबाई - 1 पहले और अंति

  1. - पायथन में casefold() स्ट्रिंग विधि

    यह फ़ंक्शन किसी शब्द के अक्षरों को लोअरकेस में बदलने में सहायक होता है। जब दो स्ट्रिंग्स पर लागू किया जाता है तो यह उनके मानों का मिलान कर सकता है भले ही अक्षरों का केस कुछ भी हो। casefold() लागू करना नीचे दिए गए उदाहरण में हम एक स्ट्रिंग पर casefold() फ़ंक्शन लागू करते हैं और परिणाम सभी लोअरकेस अ

  1. - पायथन में स्ट्रिंग लिटरल के सामने 'b' कैरेक्टर क्या करता है?

    पायथन 2 में b या B प्रीफिक्स को नजरअंदाज किया जाता है। पायथन 3 में, बाइट्स लिटरल्स हमेशा b या B से प्रीफिक्स्ड होते हैं; वे str टाइप के बजाय bytes टाइप का एक इंस्टेंस उत्पन्न करते हैं। उनमें केवल ASCII कैरेक्टर्स हो सकते हैं; 128 या अधिक न्यूमेरिक मान वाले बाइट्स को एस्केप के साथ व्यक्त किया जाना चा