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

转载于:https://www.cnblogs.com/lonkiss/p/python-eol-while-scanning-string-literal.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值