Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python構文エラー:文字列リテラルのスキャン中のEOL解決策

最高の開発者でさえ、コーディング中に常に構文エラーを起こします。プログラミング言語には非常に多くのルールがあり、1つのタイプミスでもエラーが発生する可能性があります。

「構文エラー:文字列リテラルのスキャン中にEOL」というエラーが発生した場合でも、心配する必要はありません。このガイドでは、このエラーの意味とその解決方法について説明します。考えられる原因と解決策を特定するのに役立ついくつかのシナリオ例を見ていきます。

始めましょう!

問題:構文エラー:文字列リテラルのスキャン中のEOL

構文はプログラミング言語の文法のようなものです。英語には句読点とスペルを管理する規則があります。プログラミング言語にも同様のルールがあります。

エラーを見てみましょう:

syntaxerror: EOL while scanning string literal

SyntaxErrorメッセージは、Pythonの構文規則に従わなかったことを示しています。

エラーの説明は、Pythonが、見つからなかったコード行の終わりまでに特定の文字が表示されることを期待していることを示しています。たとえば、Pythonは、文字列を開いた行の終わりまでに文字列のクローズ(”)文字を期待している場合があります。

構文エラーが発生すると、Pythonはプログラムの実行を停止します。これは、Pythonインタープリターが残りのコードを読み取る前に、問題を修正する必要があるためです。

参加者の81%は、ブートキャンプに参加した後、自分たちの技術的な仕事の見通しについてより自信を持っていると述べました。今日のブートキャンプにマッチしましょう。

平均的なブートキャンプの卒業生は、ブートキャンプの開始から最初の仕事を見つけるまで、キャリアの移行に6か月も費やしませんでした。

このエラーは通常、次の原因で発生します。

  • 間違った構文を使用して複数行にまたがる文字列
  • 引用符がありません
  • 引用符の不一致

シナリオ例:複数行の文字列

Pythonでは、文字列は複数行にまたがることができます。複数行の文字列の構文は、従来の文字列の構文とは異なります。複数行の文字列は、三重引用符で囲むか、3つの引用符を使用して記述する必要があります。

複数行の文字列を見てみましょう:

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()という関数を定義しました 。この関数は、コンソールにメッセージを出力します。このメッセージは、変数「メッセージ」に割り当てられます。

コードを実行してみましょう:

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

エラーが返されます。これは、一重引用符または二重引用符を使用する文字列が複数行にまたがることができないためです。この問題を解決するには、文字列を3つの一重引用符または二重引用符で囲む必要があります。これらの文字の間に表示されるテキストは、文字列の一部になります:

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.

成功!私たちのコードはエラーなしでメッセージを出力します。

シナリオ例:引用符がありません

文字列の内容が宣言された後、文字列を閉じる必要があります。それ以外の場合、Pythonは構文エラーを返します。閉じられていない文字列を見てみましょう。

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()

コードが正常に実行されるようになりました:ようこそ、ヒーロー!



結論

「構文エラー:文字列リテラルのスキャン中のEOL」エラーは、すべてのPython開発者が経験します。このエラーは次の場合に発生します。

  • 文字列を閉じるのを忘れた
  • 間違った記号を使用して文字列を閉じます
  • 3行ではなく1つの引用符を使用して複数行の文字列を宣言します

このエラーを解決するには、上記の条件のいずれかが当てはまるかどうかを確認してください。次に、コードに必要な変更を加えます。これで、Pythonの専門家のようにこのエラーの解決を開始する準備が整いました!


  1. Pythonのcasefold()文字列

    この関数は、単語の文字を小文字に変換するのに役立ちます。 2つの文字列に適用すると、文字の大文字小文字の種類に関係なく、それらの値と一致する可能性があります。 casefold()の適用 以下の例では、casefold()関数を文字列に適用すると、結果はすべて小文字で出力されます。 例 string = "BestTutorials" # print lowercase string print(" lowercase string: ", string.casefold()) 出力 上記のコードを実行すると、次の結果が得られます- Lowerca

  2. Pythonの文字列リテラルの前にある「b」文字は何をしますか?

    Python2では「b」または「B」のプレフィックスは無視されます。 Python 3では、バイトリテラルの前には常に「b」または「B」が付いています。 str型ではなくbytes型のインスタンスを生成します。 ASCII文字のみを含めることができます。 128以上の数値のバイトは、エスケープで表す必要があります。 Python 3.xは、タイプを明確に区別します。 str =...リテラル=一連のUnicode文字(Pythonのコンパイル方法に応じてUTF-16またはUTF-32) バイト=b...リテラル=オクテットのシーケンス(0から255までの整数)