python:SyntaxError:文字列リテラルのスキャン中にEOL


164

上記のエラーがあります s1="some very long string............"

誰かが私が間違っていることを知っていますか?


1
それが正しく閉じられ、エスケープされていない引用符がどこにもないことを確認しますか?
QuantumSoup 2010

エスケープされていない引用符は、別の解析エラーをスローします。
JanC

回答:


224

あなたは"行の終わりの前に入れていません。

"""これを行いたい場合に使用します。

""" a very long string ...... 
....that can span multiple lines
"""

17
引用符を3つだけ使用するように注意して、誤って4つ使用してエラーが発生しました
Oregano

1
文字列と変数の連結についてはどうですか?
Daniel Springer

92

私はこの問題を抱えていました-最終的に\は、文字列に文字を含めたことが原因であることがわかりました。これらのいずれかがある場合は、それらを「エスケープ」すると、\\正常に動作するはずです。


2
@Leoは「エスケープ文字」と呼ばれ、これはかなり標準的です。r文字列の前にを置くと、問題が発生するのを防ぐことができます。
エリック

17

(あなたの文字列に改行がないか、または改行したくない場合...)

このストリングは本当にどれくらいの長さですか?

ファイルまたはコマンドラインから読み取った行の長さに制限があるのではないかと思います。行の終わりがパーサーからs1="some very long string..........途切れる"ので、(エンディングなしで)のようなものが表示され、解析エラーがスローされます。

次のようにソースの改行をエスケープすることで、長い行を複数の行に分割できます。

s1="some very long string.....\
...\
...."

8

私の状況で\r\nは、一重引用符で囲まれた辞書文字列がありました。私は、すべてのインスタンスを置き換える\r\\rして\nとし\\n、それが適切にevalされた辞書でエスケープ改行を返す、私の問題を修正しました。

ast.literal_eval(my_str.replace('\r','\\r').replace('\n','\\n'))
  .....

6

私も同様の問題に直面しました。Windowsのフォルダへのパスを含む文字列がありました。たとえばC:\Users\、問題は\エスケープ文字であるため、文字列で使用するには、もう1つ追加する必要があります\

不正解: C:\Users\

正しい: C:\\\Users\\\


4

私もこの問題を抱えていましたが、ここには答えがありますが、/空のスペースが存在してはいけないので、これについて重要な点を述べたいと思い ます。


2

私もこの正確なエラーメッセージを受け取りました。「\」を追加することで問題が解決しました

結局、最後の行に「\」が付いた約8行に分割された長い文字列では、1行に「\」が欠落していたことがわかりました。

Python IDLEは、このエラーが発生した行番号を指定していませんでしたが、完全に正しい変数割り当てステートメントを赤で強調表示して、私をスローしました。実際の奇妙な文字列ステートメント( "\"を含む複数行)は、強調表示されているステートメントに隣接していました。多分これは誰かを助けるでしょう。


2

私の場合はWindowsを使用しているため、単一引用符ではなく二重引用符を使用する必要があります。

C:\Users\Dr. Printer>python -mtimeit -s"a = 0"
100000000 loops, best of 3: 0.011 usec per loop

2

postgresql関数でこのエラーが発生しました。読みやすいように\で複数行に分割した長いSQLがありました。しかし、それが問題でした。私はすべてを削除して、問題を修正するために1行にまとめました。pgadmin IIIを使用していました。


2

私のMac OS Xの場合、私は次のように述べていました。

model.export_srcpkg(platform, toolchain, 'mymodel_pkg.zip', 'mymodel.dylib’)

エラーが発生しました:

  File "<stdin>", line 1
model.export_srcpkg(platform, toolchain, 'mymodel_pkg.zip', 'mymodel.dylib’)
                                                                             ^
SyntaxError: EOL while scanning string literal

私が変更した後:

model.export_srcpkg(platform, toolchain, "mymodel_pkg.zip", "mymodel.dylib")

出来た...

デビッド


2

あなたはこれを試すことができます:

s = r'long\annoying\path'

1
それが最良の答えです。も試すことができますs = r'long\annoying\path\\'
shahar_m

1

あなたvariable(s1)は複数の行にまたがっています。これを行うには(つまり、文字列を複数行に広げたい場合)、三重引用符( "" ")を使用する必要があります。

s1="""some very long 
string............"""

1

この場合、3つの単一引用符または3つの二重引用符の両方が機能します。例えば:

    """Parameters:
    ...Type something.....
    .....finishing statement"""

または

    '''Parameters:
    ...Type something.....
    .....finishing statement'''

0

以前のほとんどの回答は正しく、私の回答はaaronasterlingと非常によく似ています。また、3つの単一引用符s1 = '' 'some long long string ............' ''を実行することもできます。


0

ハードドライブのディレクトリにアクセスしているときにも、同じ問題に直面していました。それから私はこのようにそれを解決しました。

 import os
 os.startfile("D:\folder_name\file_name") #running shortcut
 os.startfile("F:") #accessing directory

ここに画像の説明を入力してください

上の図は、エラーと解決された出力を示しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.