파이썬 : SyntaxError : 문자열 리터럴을 스캔하는 동안 EOL


164

위에서 언급 한 오류가 있습니다. s1="some very long string............"

아무도 내가 뭘 잘못하고 있는지 알고 있습니까?


1
올바르게 닫히고 어딘가에 이스케이프되지 않은 따옴표가 있습니까?
quantumSoup

이스케이프되지 않은 따옴표는 다른 구문 분석 오류를 발생시킵니다.
JanC

답변:


224

"줄의 끝에는을 넣지 않습니다 .

이렇게하려면 사용하십시오 """:

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

17
따옴표 3 개만 사용하도록주의를 기울이면 실수로 4 개가 발생하여 오류가 발생했습니다.
Oregano

1
문자열과 변수를 연결하는 것은 어떻습니까?
Daniel Springer

92

나는이 문제가 있었다-결국 그 이유는 내가 \문자열에 문자를 포함 시켰기 때문이다 . 이 중 하나라도 가지고 있으면 "이스케이프"하면 \\제대로 작동합니다.


2
@ 레오 그들은 '이스케이프 문자'라고하며 이것은 꽤 표준입니다. r문자열을 앞에 두어 문제를 일으키는 것을 피할 수 있습니다.
eric

17

(문자열에 줄 바꿈이 없거나 원하지 않는다고 가정하면 ...)

이 끈은 얼마나 걸립니까?

파일이나 명령 줄에서 읽은 줄 길이에 제한이 있다고 생각하고 줄 끝이 잘 리기 때문에 파서가 s1="some very long string..........(끝없이 ")와 같은 것을보고 파싱 ​​오류가 발생합니까?

다음과 같이 소스에서 줄 바꿈을 이스케이프 처리하여 긴 줄을 여러 줄로 나눌 수 있습니다.

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

8

내 상황에서 나는 \r\n작은 따옴표로 묶은 사전 문자열을 가지고있었습니다 . 나는의 모든 인스턴스 교체 \r\\r\n와를 \\n하며 제대로 eval'ed DICT에서 탈출 줄 바꿈을 반환, 내 문제를 해결.

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

6

나는 비슷한 문제에 직면했다. Windows에서 폴더 경로를 포함하는 문자열이 있습니다. 예를 들어 C:\Users\문제는 \이스케이프 문자이므로 문자열에서 사용하려면 하나 더 추가해야합니다 \.

잘못됨 : C:\Users\

옳은: C:\\\Users\\\


4

/나도이 문제가 있었지만 여기에 답이 있었지만 빈 공간이 없어야 할 때 중요한 점을 알고 싶습니다.


2

이 정확한 오류 메시지도 나타났습니다. "\"를 추가하면 문제가 해결되었습니다.

마지막 줄에 "\"가있는 약 8 개의 줄로 나뉘어 진 긴 문자열에 한 줄에 "\"가없는 것으로 나타났습니다.

파이썬 IDLE 은이 오류가 발생한 줄 번호를 지정하지 않았지만 완전히 정확한 변수 할당 문을 강조 표시하여 나를 버렸습니다. 실제 misshapen 문자열 명령문 ( "\"로 여러 줄 길이)은 강조 표시된 명령문과 인접 해 있습니다. 아마도 이것은 다른 누군가를 도울 것입니다.


2

필자의 경우 Windows를 사용하므로 작은 따옴표 대신 큰 따옴표를 사용해야합니다.

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

2

postgresql 함수 에서이 오류가 발생했습니다. 가독성을 높이기 위해 \로 여러 줄로 나눈 긴 SQL이 있습니다. 그러나 이것이 문제였습니다. 문제를 해결하기 위해 모두 제거하고 한 줄로 만들었습니다. 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

이 경우 세 개의 작은 따옴표 또는 세 개의 큰 따옴표가 모두 작동합니다! 예를 들면 다음과 같습니다.

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

또는

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

0

대부분의 이전 답변은 정확하고 내 답변은 aaronasterling과 매우 유사합니다 .3 개의 작은 따옴표를 사용할 수도 있습니다 s1 = '' '일부 매우 긴 문자열 ............' '' '


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.