前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python SyntaxError: EOL while scanning string literal

python SyntaxError: EOL while scanning string literal

作者头像
狼啸风云
修改2022-09-02 21:44:11
37.1K0
修改2022-09-02 21:44:11
举报

错误原因是,字符串以 \ 结尾 或者字符串缺少引号。

写代码拼接windows 路径出现这个错误, 查资料才知道 python中字符串不能以 \ 结尾

我的代码如下

代码语言:javascript
复制
import os
dirname = "test"

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

运行则报错

代码语言:javascript
复制
File "test.py", line 3
    path = r'C:\Users\panda\Desktop\新建文件夹\' + dirname
                                                    ^
SyntaxError: EOL while scanning string literal

那么如何解决呢

方法一 : 使用 os.path.join

代码语言:javascript
复制
path = os.path.join(r'C:\Users\panda\Desktop\新建文件夹', dirname)

方法二:路径的反斜杠使用转义 而不用 r

代码语言:javascript
复制
path = 'C:\\Users\\panda\\Desktop\\新建文件夹\\' + dirname

方法三:格式化字符串

代码语言:javascript
复制
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

代码语言:javascript
复制
# 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演示

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-06-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档