原始字符串的结尾处如果是反斜杠,方法1好像行不通,请大神指点
例如想表示D:\Program Files\Python 3.8\由于Python 原始字符串中的反斜杠仍然会对引号进行转义,因此原始字符串的结尾处不能是反斜杠,否则字符串结尾处的引号会被转义,导致字符串不能正确结束。
>>> str1 = 'D:\Program Files\Python 3.8\'
SyntaxError: EOL while scanning string literal
>>> str1 = r'D:\Program Files\Python 3.8\'
SyntaxError: EOL while scanning string literal
在 Python 中有两种方式解决这个问题:
方式1:不要使用原始字符串,改用长字符串的写法;
>>> str1 = '''D:\Program Files\Python 3.8\'''
(重启IDLE)
>>> str1 = '''
D:\Program Files\Python 3.8\
'''
>>> print(str1)
D:\Program Files\Python 3.8 # 结尾缺少\
方式2:使用原始字符串,同时单独书写反斜杠---这是接下来要重点说明的。
1.str1 = r'D:\Program Files\Python 3.8' '\\'
2.print(str1)
我们先写了一个原始字符串r'D:\Program Files\Python 3.8',紧接着又使用'\\'写了一个包含转义字符的普通字符串,Python 会自动将这两个字符串拼接在一起,所以上面代码的输出结果是:
D:\Program Files\Python 3.8\ str1 = r'D:\Program Files\Python 3.8' + '\\' jackz007 发表于 2022-11-25 02:40
谢谢大神
(1)你的写法str1 = r'D:\Program Files\Python 3.8' + '\\',或我提到的str1 = r'D:\Program Files\Python 3.8' '\\'
经测试,以上两种都可实现print(str1)的输出结果为D:\Program Files\Python 3.8\
(2)方式1在http://c.biancheng.net/view/4227.html有提到,但作者并未列明代码,我自己测试好像行不通,不知道是否原文作者有误 lzb1001 发表于 2022-11-25 08:28
谢谢大神
(1)你的写法str1 = r'D:\Program Files\Python 3.8' + '\\',或我提到的str1 = r'D:\Progr ...
那个不是为了将反斜杠写入字符串中,而是表示这一行的语句没有结束,和下一行语句是连在一起的。就比如,x = "hello"和x = "h\
ell\
o"的效果是一样的 本帖最后由 阿奇_o 于 2022-11-25 14:10 编辑
路径问题,担心拼接错误的,就尽量用 os.path.join(...)即可 。
结尾从反斜杠的问题,是因为 它先处理了 单引号成对与否的语法检查,而不是先处理 r-string 这个功能 。 (其实你加不加 r ,如果最后带一个反斜杠都会通不过语法检查)
反斜杠是"转义字符",escape ,反斜杠让紧接的 单引号,不再是匹配前面的单引号,而是其本身,作为字符串一部分。
所以它会报语法错误,说你unterminated string literal未正确终结文本字符, 就是因为它会先检查 引号,括号等这些成对的特殊符号 匹配语法。
页:
[1]