1.字符串的转义符

  1. 有两层含义:
  • 将普通符号进行特殊化:\n, \t, \b等等。
  • 将特殊符号进行普通化:\ , \\ 等等。
    转义符 (比较常见)
    image

(1)\n 换行符

s = "hello \nworld"
print(s)
#结果
hello
world

利用换行符,可以对要换行的字符串进行切换到下一行。

(2)\t 制表符

s = "hello \tworld"
print(s)
#结果
hello    world(通过制表符,在制表符位置空四行)

利用制表符,可以在\t处进行空行,一般空四行。

(3)\b 退格字符

s = "hello world\b"
print(s)
# 结果
hello worl

利用退格字符,可以删除\b前面的一个字符元素,相当于按一次的delete。

(4)\”和\‘ 单双引号字符

s = "hello \"world\""
print(s)
#结果 (单双引号同原理。)
hello "world"

利用单双引号字符,可以给输出的内容打双引号。

(5)\\ 反斜杠

s = "hello \\boot\\alex"#原内容为:s = "hello \boot\alex"
print(s)
#结果
hello \boot\alex

**反斜杠的用法就是一个此消彼长的过程,原内容中\b有转义符功能,但这里我们只做内容输出,所以再加一个“\”(反斜杠有取消符号功能的作用),它把原内容的\b和\变成字符元素。

拓展

raw-string原始字符串任何符号不具备功能**

s = r"C:\Users\30881\Desktop\PS-2020.zip"
print(s)

如果不加r里面反斜杠处有些有转义字符功能,输出的内容就不是原来s变量的内容了,会缺斤少两。

2.字符串格式化输出

2.1 定义

格式化输出是一种将变量值和其他文本组合成特定格式的字符串的技术。它允许我们以可读性更好的方式将数据插入到字符串中,并指定其显示的样式和布局。

在Python中,有多种方法可以进行格式化输出,其中最常用的方式是使用字符串的f-strings格式化字符串字面值

格式化输出是对对象进行嵌入式输入,而且是动态下的

2.2 %占位符

name="yuan"
age=19
message="My name is %s, and I am %s years old" % (name,age)
print(message)

在这个示例中,我们使用%s占位符将变量name的值插入到字符串“Hello,%s!”中,然后通过%运算符进行格式化。在执行格式化时,%运算符的左侧是字符串模板,右侧是要按顺序插入的值。
%是个预留位置的入场券,需要嵌入的数据就是到场的嘉宾,s就好比一个种类,是男人,女人还是小孩等等,二在上面的代码说明数据是字符串。

name ="cwx"
age = "19"
s = "姓名:%s,年龄:%d"
print(s)
#结果
会报错,因为%d是十进制符,而age中"19"为字符串,不能作为数字的。正确的应该是:
s = "姓名:%s,年龄: %s"%(name,age)
%s就不会区别十进制和字符串,两个都可以识别。

补充

在Python的字符串格式化中,% 后面可以跟多种类型标识符:

常用类型标识符:

标识符 类型 示例
%s 字符串 "Hello %s" % "world"
%d 十进制整数 "Number: %d" % 42
%f 浮点数 "Price: %f" % 3.14
%x 十六进制整数 "Hex: %x" % 255
%o 八进制整数 "Oct: %o" % 64
%e 科学计数法 "Science: %e" % 1000
%c 字符 "Char: %c" % 'A'
%% 百分号本身 "Discount: 20%%"

示例代码:

# 基本用法
name = "Alice"
age = 25
height = 165.5

print("Name: %s, Age: %d, Height: %.2f" % (name, age, height))
# 输出:Name: Alice, Age: 25, Height: 165.50

# 浮点数精度控制
print("Pi: %.3f" % 3.14159)  # 输出:Pi: 3.142

# 十六进制和八进制
print("Hex: %x, Oct: %o" % (255, 64))  # 输出:Hex: ff, Oct: 100

# 科学计数法
print("Science: %e" % 1000000)  # 输出:Science: 1.000000e+06

格式化选项:

  • %nd:整数占n位宽度(右对齐)
  • %-nd:整数占n位宽度(左对齐)
  • %.nf:浮点数保留n位小数
  • %m.nf:总宽度m,保留n位小数
# 宽度和对齐
print("Number: %5d" % 42)     # 输出:Number:    42
print("Number: %-5d" % 42)    # 输出:Number: 42   
print("Price: %8.2f" % 3.14)  # 输出:Price:     3.14

注意:现代Python更推荐使用 str.format() 或 f-string 进行字符串格式化。

F-String 格式化输出

格式化字符串字面值(FormattedStringLiteral,或称为f-string)来进行格式化输出。适用
于Python3.6及以上版本

在以下的例子中,将会讲解宽度、精度、对齐和填充 ·


星仔高高兴兴开始上下午的班,但老板发了个文件让改文件excel里的信息格式,于是:

# 内容
name = "yuan"
age = 18
height = 185
t = f"姓名:{name},年龄:{age},身高:{height}"
name = "abcdefg"
age = 33
height = 190
s = f"姓名:{name},年龄:{age},身高:{height}"
print(t)
print(s)
#结果
姓名:yuan,年龄:18,身高:185
姓名:abcdefg,年龄:33,身高:190
#发现内容不对齐,格式不工整,不太美观,星仔想到了以下的办法。
#(1)用宽度(width)把需要输入的格式框变宽将要输出的字符串进行站范围。
name = "yuan"
age = 18
height = 185
s = f"姓名:{name:15},年龄:{age},身高:{height}"
name = "abcdefg"
age = 33
height = 190
t = f"姓名:{name:15},年龄:{age},身高:{height}"
print(t)
print(s)
#结果 发现特别工整。
姓名:abcdefg        ,年龄:33,身高:190
姓名:yuan           ,年龄:18,身高:185
#发现age=33的年龄错了,要改成33.1234560000009,发现数字太长了,只想要一位小数。
#(2)用精度(precision)把字符串变成精确值。
name = "yuan"
age = 18
height = 185
s = f"姓名:{name:15},年龄:{age:15},身高:{height}"
name = "abcdefg"
age = 33.1234560000009
height = 190
t = f"姓名:{name:15},年龄:{age:15.3},身高:{height}"
print(s)
print(t)
#结果 发现年龄保留了一位小数,而15.3的意思是width.precision。3是保留三个序列字符。
姓名:yuan           ,年龄:             18,身高:185
姓名:abcdefg        ,年龄:           33.1,身高:190
# 现在老板要求把年龄的对齐也改为左对齐。
#(3)用对齐(align)把字符串内容对齐
**其中对齐符号为 <(左对齐),>(右对齐),^(句中对齐)**
name = "yuan" 
age = 18 
height = 185 
s = f"姓名:{name:15},年龄:{age:<15},身高:{height}" 
name = "abcdefg" 
age = 33.1234560000009 
height = 190 
t = f"姓名:{name:15},年龄:{age:<15.3},身高:{height}" 
print(s) 
print(t)
#结果
姓名:yuan           ,年龄:18             ,身高:185
姓名:abcdefg        ,年龄:33.1           ,身高:190
#老板说姓名要居中两边用短横分割
#(4)用填充(pad)把字符串姓名填充为短横。
name = "yuan"  
age = 18  
height = 185  
s = f"姓名:{name:-^15},年龄:{age:<15},身高:{height}"  
name = "abcdefg"  
age = 33.1234560000009  
height = 190  
t = f"姓名:{name:-^15},年龄:{age:<15.3},身高:{height}"  
print(s)  
print(t)
#结果
姓名:-----yuan------,年龄:18             ,身高:185
姓名:----abcdefg----,年龄:33.1           ,身高:190
#老板接着又发来一个excel,里面全是员工信息,让牛马实习生星仔改成(4)的格式,可是牛马实习生不想加班,想要早点下班去我的世界。
#(5)以上数据都为死数据,现在要变成活的,嵌入则能输出不同数据。
用变量和模块构建表达式进行格式化输出。
import pandas as pd
import openpyxl

path = r"C:\Users\30881\Desktop\格式化输出.xlsx"
# 使用openpyxl打开文件
workbook = openpyxl.load_workbook(path)
# 获取第一个工作表
table = workbook.worksheets[0]

for row in range(1, 7):
    name = table.cell(row=row + 1, column=1).value
    age = table.cell(row=row + 1, column=2).value
    height = table.cell(row=row + 1, column=3).value
s = f'姓名: {name:*^15},年龄: {age:<15},身高: {height}'
print(s)
#结果
姓名: *******a*******,年龄: 23             ,身高: 133
姓名: *******b*******,年龄: 45             ,身高: 234
姓名: *******c*******,年龄: 456            ,身高: 234
姓名: *******d*******,年龄: 34             ,身高: 454
姓名: *******e*******,年龄: 12             ,身高: 345
ok,下班,让星仔加班那是不可能的,太得意的说了句,今天的破班就上到这吧。可是,真的是这样吗?请看下集^@@^