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")。

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

相关推荐
陈年老古董1 小时前
PyQt5 入门指南:环境搭建、PyCharm 外部工具配置与登录界面实战
开发语言·qt·pycharm
看浪的路人1 小时前
第7讲:大模型后端服务化——Go 实现高并发 LLM Proxy / Router / Fallback
开发语言·后端·golang
用户019027581612 小时前
如何用 Python 计算 EMV 简易波动指标?
python
第25小时记录2 小时前
[2026] Linux安装教程
运维·python
iCxhust2 小时前
Matlab求解发电机的极限切除角
开发语言·算法·matlab·电力系统
zhanghaha13142 小时前
Qt 类完整例程【逐词拆解 + 逐步骤执行保姆教程】
开发语言·qt
code2cat2 小时前
Java进阶篇之AtomicReferenceFieldUpdater:用不可变快照替换整份状态
java·开发语言·cas
Nathan__272 小时前
PHP面试题——情景应用
开发语言·php