当前位置:   article > 正文

【Python入门教程】第78篇 原始字符串_python 原始字符串

python 原始字符串

本篇我们介绍一下 Python 中的原始字符串(raw strings ),它可以将字符串中的反斜线当作普通字符处理。

原始字符串

在 Python 中,以字母 r 或者 R 作为前缀的字符串,例如 r’…’ 和 R’…’,被称为原始字符串。与常规字符串不同,原始字符串中的反斜线(\)是一个普通字符,不具有转义功能。

原始字符串通常用于处理字符串中存在多个反斜线的情况,例如正则表达式和 Windows 目录路径。

为了表示制表符和换行符等特殊字符,Python 使用反斜线作为转义字符。例如:

s = 'lang\tver\nPython\t3'
print(s)
  • 1
  • 2

输出结果如下:

lang    ver
Python  3
  • 1
  • 2

但是原始字符串则将反斜线作为原义字符进行处理。例如:

s = r'lang\tver\nPython\t3'
print(s)
  • 1
  • 2

输出结果如下:

lang\tver\nPython\t3
  • 1

原始字符串类似于将反斜线表示为双反斜线的常规字符串:

s1 = r'lang\tver\nPython\t3'
s2 = 'lang\\tver\\nPython\\t3'

print(s1 == s2) # True
  • 1
  • 2
  • 3
  • 4

在常规字符串中,Python 将整个转义序列当作单个字符:

s = '\n'
print(len(s)) # 1
  • 1
  • 2

但是在原始字符串中,Python 则将反斜线单独当作一个字符:

s = r'\n'
print(len(s)) # 2
  • 1
  • 2

由于反斜线可以对单引号和双引号进行转义,原始字符串不能以奇数个反斜线结尾。例如:

s = r'\'
SyntaxError: EOL while scanning string literal

s = r'\\\'
SyntaxError: EOL while scanning string literal
  • 1
  • 2
  • 3
  • 4
  • 5

使用原始字符串处理 Windows 文件路径

Windows 操作系统使用反斜线分隔文件路径,例如:

c:\user\tasks\new
  • 1

如果我们使用这种路径作为常规字符串,Python 会返回错误信息:

dir_path = 'c:\user\tasks\new'
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \uXXXX escape
  • 1
  • 2

Python 会将路径中的 \u 作为一个 Unicode 转义字符,但是无法进行解码。

如果我们将第一个反斜线进行转义,仍然存在其他错误:

dir_path = 'c:\\user\tasks\new'
print(dir_path)
c:\user asks
ew
  • 1
  • 2
  • 3
  • 4

以上示例中的 \t 是制表符,\n 是换行符。

为了彻底解决问题,我们可以将路径转换为原始字符串:

dir_path = r'c:\user\tasks\new'
print(dir_path)
  • 1
  • 2

将常规字符串转换为原始字符串

内置函数 repr() 可以将常规字符串转换为原始字符串,例如:

s = '\n'
raw_string = repr(s)

print(raw_string)
  • 1
  • 2
  • 3
  • 4

输出结果如下:

'\n'
  • 1

结果中的原始字符串包含了开始和结尾处的单引号。如果想要删除这些单引号,可以使用列表切片操作:

s = '\n'
raw_string = repr(s)[1:-1]
print(raw_string)
  • 1
  • 2
  • 3

总结

  • 以字母 r 或者 R 为前缀的字符串是原始字符串。
  • 原始字符串中的反斜线是一个字面字符,不具有转义功能。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/953486
推荐阅读
相关标签
  

闽ICP备14008679号