Python 原始字符串详解 | r 前缀到底让什么不再转义

【Python案例】打印一张规范的小票 ------ 原始字符串与三引号

案例需求

本单元要和字符串的显示效果打两次交道:一次是 Windows 文件路径,反斜杠要原样显示;一次是超市小票,要用多行文字排出整齐的版面。请完成下列任务:

  1. 用原始字符串 保存并打印一个 Windows 路径 C:\Users\Python\lesson.py,要求反斜杠正常显示、不被当成转义;
  2. 用三引号字符串 打印一张小票,内容分多行,商品名与单价之间用制表符 \t 对齐。

案例实现

第 1 步 :原始字符串就是在引号前加一个字母 r,里面的反斜杠不再当成转义字符。打印 Windows 路径 C:\Users\Python\lesson.py。

python 复制代码
path = r"C:\Users\Python\lesson.py"
print("原始字符串:", path)

第 2 步 :三引号 """...""" 可以一次写出多行文字,换行会原样保留。打印一张小票,内容分多行。

python 复制代码
ticket = """===== 购物小票 =====
商品\t\t单价
苹果\t\t5.5
牛奶\t\t12.0
====================
合计\t\t17.5"""
print(ticket)

完整代码:

python 复制代码
path = r"C:\Users\Python\lesson.py"
print("原始字符串:", path)
ticket = """===== 购物小票 =====
商品\t\t单价
苹果\t\t5.5
牛奶\t\t12.0
====================
合计\t\t17.5"""
print(ticket)

运行结果:

复制代码
原始字符串: C:\Users\Python\lesson.py
===== 购物小票 =====
商品		单价
苹果		5.5
牛奶		12.0
====================
合计		17.5

案例解析

  • 原始字符串 r"..." :给字符串加上前缀 r 之后,里面的内容一律按原样处理,反斜杠不再是转义符,而是当成普通字符,写文件路径、正则表达式时特别省事。
  • 三引号字符串 :用三个连续引号(""" 或 ''')包裹起来的字符串,可以跨多行书写,换行和空格都会被保留,常用来写小票、说明文字这类多行内容。
  • \t 制表对齐 :一个 \t 相当于跳到下一个制表位,用它可以在不同行之间对齐列。这里用两个 \t 让"商品名"和"单价"拉开距离。
  • 注意:三引号内容前面的缩进空格也会被打印出来,所以内容一般要顶格写,不要随意加空格。

相关练习

一、题目

1.(选择题) 在字符串 r"C:\new" 中,\n 会被当成(  )。

  • A. 一个换行符
  • B. 两个普通字符:反斜杠和字母 n
  • C. 程序报错
  • D. 一个制表符

2.(填空题) 想要一次写出多行文字,可以使用三个连续引号,这种字符串通常叫作 ________ 字符串。

3.(判断题) 三引号字符串会自动删掉每行前面的空格。(  )

4.(简答题) 请写出代码:用三引号打印两行文字。第一行写"商品"和"单价",第二行写"苹果"和"5.5",每行里的两项之间留出对齐的空位。

二、参考答案与解析

1. 答案:B

解析:原始字符串 r"..." 中的反斜杠不再具有转义功能,\n 就是反斜杠和字母 n 两个普通字符,原样输出。

2. 答案:三引号(也叫多行字符串)

解析:三个连续引号定义的字符串可以跨越多个书写行,因此常被叫作"三引号字符串"或"多行字符串"。

3. 答案:错误(×)

解析:三引号会原样保留字符串里的所有空格与换行,不会自动删除缩进。这也是它排版时必须顶格写的原因。

4. 答案:

python 复制代码
print("""商品  单价
苹果  5.5""")

解析:三引号允许在源码中直接换行,打印时会保留这个换行效果。也可以写成 print("商品 单价\n苹果 5.5")。

声明:本文部分内容由人工智能辅助生成。

相关推荐
小徐不徐说4 小时前
序列化与反序列化:把 C++ 对象可靠地保存下来
开发语言·数据库·c++·php
ragnwang4 小时前
Notes: Python pybind11 import C++ module
开发语言·c++·python
王中阳Go4 小时前
后端转 Agent 岗面试怎么答:8 个高频问题与应答口径
人工智能·后端·python·大语言模型
Wang's Blog4 小时前
Java 项目实战: 交友项目 - 搜索附近的功能概述和分析
java·开发语言·交友
骑着蜗牛撵大象3274 小时前
大模型 Agent 的沙箱护栏:gVisor 隔离、出口白名单与审计闭环
java·开发语言·jvm·安全·agent沙箱·gvisor·microvm
weixin_307779135 小时前
RAG 面试陷阱——混合检索并非无条件优越:一个条件反转实验
人工智能·python·面试·职场和发展
Dxy12393102165 小时前
JS DES 加密详解
开发语言·javascript·arcgis
充值内卷5 小时前
我给桌面加了个鱼缸:C++ 写后端,WebView2 里养一座 Three.js 小岛
开发语言·javascript·c++
云和数据.ChenGuang5 小时前
深入解析 Python 的 dir():从用法到 CPython 源码实现
开发语言·人工智能·python·langchain
nice_lcj5206 小时前
深入理解 Java 反射:从 Class 对象到方法调用(含性能实测 + 迷你 IOC 实战 + 面试考点)
java·开发语言·后端·面试