python SyntaxError: EOL while scanning string literal


錯誤原因是,字符串以 \ 結尾 或者字符串缺少引號。

寫代碼拼接windows 路徑出現這個錯誤, 查資料才知道 python中字符串不能以 \ 結尾

我的代碼如下

import os
dirname = "test"

path = r'C:\Users\panda\Desktop\新建文件夾\' + dirname

 

運行則報錯

  File "test.py", line 3
    path = r'C:\Users\panda\Desktop\新建文件夾\' + dirname
                                                    ^
SyntaxError: EOL while scanning string literal

 

那么如何解決呢

方法一 : 使用 os.path.join

path = os.path.join(r'C:\Users\panda\Desktop\新建文件夾', dirname)

 

方法二:路徑的反斜杠使用轉義 而不用 r

path = 'C:\\Users\\panda\\Desktop\\新建文件夾\\' + dirname

 

方法三:格式化字符串

dirname="test"
path = r'C:\Users\panda\Desktop\新建文件夾\%s' % (dirname)  # 第一種格式化方法
#從 python 2.6 開始
path = r'C:\Users\panda\Desktop\新建文件夾\{}'.format(dirname) # 第二種格式化方法

 

方法四: string interpolation (字符串內插)

從python 3.6 開始 支持string interpolation

# python 3.6 開始 支持string interpolation
dirname = "test"
path3 = rf'C:\Users\panda\Desktop\新建文件夾\{dirname}' 

參考: https://docs.python.org/3/whatsnew/3.6.html#whatsnew36-pep498 

 

為何 字符串不能 以 \ (反斜杠) 結束呢

因為 反斜杠有別的用處。 python中一個完整的字符串太長的時候,一行寫不下想換行,但又要維持它是一個字符串的時候 可以用 反斜杠來換行,所以反斜杠后面不能立即接上字符串結束的引號。 

下面用 REPL演示

 

 

參考資料:

SyntaxError: EOL while scanning string literal的解決 - CSDN博客

python: SyntaxError: EOL while scanning string literal - Stack Overflow


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM