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

原始字符串

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

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

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

s = 'lang\tver\nPython\t3'
print(s)

输出结果如下:

lang    ver
Python  3

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

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

输出结果如下:

lang\tver\nPython\t3

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

s1 = r'lang\tver\nPython\t3'
s2 = 'lang\\tver\\nPython\\t3'print(s1 == s2) # True

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

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

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

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

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

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

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

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

c:\user\tasks\new

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

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

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

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

dir_path = 'c:\\user\tasks\new'
print(dir_path)
c:\user asks
ew

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

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

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

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

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

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

输出结果如下:

'\n'

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

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

总结

  • 以字母 r 或者 R 为前缀的字符串是原始字符串。
  • 原始字符串中的反斜线是一个字面字符,不具有转义功能。

【Python入门教程】第78篇 原始字符串相关推荐

  1. python字符串的特点_字符串特点_清华尹成python入门教程_少儿编程视频-51CTO学院...

    此课程与<清华编程高手.尹成.带你实战python入门>大体相同,只需购买其中的一门课程. 本课程由清华大学尹成老师录制,课程的特色在于讲解原理的同时引入了每个程序员都热衷的黑客技术.py ...

  2. python语言入门教程-菜鸟学Python入门教程大盘点|7个多月的心血总结

    原标题:菜鸟学Python入门教程大盘点|7个多月的心血总结 阅读本文大概需要5分钟 菜鸟学python已经写了70几篇,入门的教程已经快写完了,我把入门的文章整理了一下,下面是入门篇的一些总结,也是 ...

  3. python入门教程收藏_python入门教程:超详细保你1小时学会Python,快来收藏看看...

    简介:简介(转发文章+私信[Python]获取资料方式)1.Hello world安装完Python之后,打开IDLE(Python GUI) ,该程序是Python语言解释器,你写的语句能够立即运行 ...

  4. 《假如编程是魔法之零基础看得懂的Python入门教程 》——(六)精简魔法更强大

    学习目标 了解对相似逻辑的简化编写--循环 推荐 1.<备受好评的看得懂的C语言入门教程> 目录 第一篇:<假如编程是魔法之零基础看得懂的Python入门教程 >--(一)既然 ...

  5. 《假如编程是魔法之零基础看得懂的Python入门教程 》——(五)我的魔法竟然有了一丝逻辑

    学习目标 了解魔法世界中的结构表现--缩进 了解魔法世界的逻辑判断--if 了解魔法世界的多次逻辑判断--ifelse嵌套 了解魔法世界中的逻辑运算--且 and 与或 or 推荐 1.<备受好 ...

  6. 《假如编程是魔法之零基础看得懂的Python入门教程 》——(三)使用初始魔法跟编程魔法世界打个招呼吧

    学习目标 完成显示魔法的使用--输出print 完成传入魔法的使用--输入input 使魔法生效--运行python文件 目录 第一篇:<假如编程是魔法之零基础看得懂的Python入门教程 &g ...

  7. python入门教程(非常详细)-菜鸟学Python入门教程大盘点|7个多月的心血总结

    原标题:菜鸟学Python入门教程大盘点|7个多月的心血总结 阅读本文大概需要5分钟 菜鸟学python已经写了70几篇,入门的教程已经快写完了,我把入门的文章整理了一下,下面是入门篇的一些总结,也是 ...

  8. Python入门教程详解

    Python入门教程 目录 1. 简介 2. 安装 3. 基本语法 4. 数据类型 5. 条件语句 6. 循环 7. 函数 8. 模块 9. 异常处理 10. 文件输入输出 1. 简介 Python是 ...

  9. 《假如编程是魔法之零基础看得懂的Python入门教程 》——(四)了解魔法百宝箱列表、字典及基本数据类型

    学习目标 了解魔法世界中可更改容器--变量 了解魔法世界的基本数值类型--字符串.整数 了解魔法百宝箱--字典.列表 了解列表如何添加值 了解字典如何添加值 了解字典与列表定义的不同符号 目录 第一篇 ...

最新文章

  1. RPC远程过程调用之Hessian 基于HTTP
  2. 使用类似Lambda的语法切换为Java中的表达式
  3. 浅谈数据结构之主席树(线段树进阶版)
  4. 关于CSS HACK
  5. 如何在Windows下像Mac一样优雅开发
  6. 【Windows】多显示器亮度调节工具 - Monitorian
  7. 开源考试系统 -微信小程序开发
  8. 【目标检测】|RFB ECCV2018
  9. java 中的枚举_说说Java中的枚举(一)
  10. 帕卡贝尔的D大调卡农之由来
  11. 盘点2022热词、网络流行语!富而喜悦摆渡人走红!
  12. NetXMS中文版用户手册部分翻译
  13. 图像自动裁剪和角度矫正
  14. 终于等到你,最强 IDE Visual Studio 2017 正式版发布
  15. 专访小熊戴欣,从国内最贵婚尚大咖到仪式感大师的进阶之路
  16. 工厂模式——简单工厂模式、工厂方法模式和抽象工厂模式
  17. “笨办法”学Python3,Zed A. Shaw,习题18
  18. 计算机软件大赛征稿,全国多媒体教育软件大奖赛征稿函
  19. uci2019计算机录取,最新 | 加州大学各分校2019年申请数据公开,录取率再降低,凉到心底!...
  20. 玩转KVM:一招打开vm的console口

热门文章

  1. php 变量的md5加密,利用PHP脚本在Linux下用md5函数加密字符串的方法
  2. Fabric 1.0源代码分析(33) Peer #peer channel命令及子命令实现
  3. [原]jQuery .tmpl(), .template()学习
  4. Java ASM框架与字节码插桩的常见用法(生成类,修改类,方法插桩,方法注入)
  5. 一步一步教你搭建外卖cps小程序(分销裂变版本)附源码
  6. Win10系统下设置软件(.exe可执行程序)开机自启方法
  7. freecad安装记录
  8. opencv 显示中文汉字(添加中文支持)
  9. 2023 年 1 月阿拉丁指数百强发布:更替率 17%,旅游回暖,餐饮火爆,要“年味儿”更要“健康”
  10. 设计模式の建造者模式