概述
人类的文明特征之一是 文字,计算机的重要使用场景之一就是 处理文字,在计算机中将文字成为“ 字符串 ”
python中,str类型表示字符串,在内存中是Unicode编码,是 不可变序列
在常见开发语言中(C/C++/JAVA/C#),字符串都是重要且常用的数据类型
JAVA、C#,都采用Unicode编码
定义字符串
单行字符串
s='测试'
等同于
s="测试"
多行字符串
s='''这是
多行
字符串'''
等同于
s="""这是
多行
字符串"""
转义字符
'\n' 是换行符
'\t' 是制表符
例子
s = "窗前明月光\n疑是地上霜" # 写成一行
print(s)
执行结果:
窗前明月光 # 打印成两行
疑是地上霜
双 \
'\\t' 对斜杠进行转义,此时只输出\t
f字符串(前面加:f/F)
Python 3.6+ 推出,目前最推荐的字符串格式化方式,简洁高效。
字符串前加 f / F,{变量/表达式} 直接嵌入文本
name = "张三"
age = 22
s = f"姓名:{name},年龄:{age}"
print(s)
# 输出:姓名:张三,年龄:22
大括号内支持任意表达式
a = 10
b = 3
print(f"求和 {a + b},除法 {a / b}")
print(f"平方 {a ** 2}")
def hello():
return "测试函数"
print(f"调用函数:{hello()}")
格式控制(: 冒号格式化)
通用模板:{变量:格式说明符}
数字常用格式化
num = 123.45678
# 保留2位小数
print(f"{num:.2f}") # 123.46
# 千位分隔符
print(f"{1234567:,}") # 1,234,567
# 固定宽度,右对齐
print(f"{num:10.2f}")
# 百分比
print(f"{0.789:.1%}") # 78.9%
# 整数进制
n = 20
print(f"十进制{n}, 十六进制{n:x}, 二进制{n:b}")
对齐填充
text = "python"
print(f"{text:<10}") # 左对齐,占10字符
print(f"{text:>10}") # 右对齐
print(f"{text:^10}") # 居中
print(f"{text:=^10}") # 居中,=填充:==python==
转义大括号
想要输出字面量 { 和 },写两层
print(f"{{hello}} {1+1}")
# 输出:{hello} 2
❌ 不能用
\{转义,f-string不支持反斜杠转义大括号
多行f-string
name = "李四"
info = (
f"名字:{name}\n"
f"年龄:{20}"
)
# 或者三引号
msg = f"""
姓名: {name}
年份: {2026}
"""
重要限制
- f-string内部不能直接出现反斜杠
\# 报错! # s = f"test{\n}" # 解决:先把换行存入变量 newline = "\n" s = f"test{newline}" - 不能在
{}内部使用注释# - Python 3.5及更早版本不支持
r字符串(前面加:r/R)
r 前缀表示 原始字符串(raw string),它会取消字符串中的转义字符(如 \n、\t)的特殊含义。
原始字符串适用于需要保留转义字符原始形式的情况,如:
- 正则表达式
- 文件路径
例子
s = r"窗前明月光\n疑是地上霜"
print(s)
b字符串(前面加:b)
表示bytes类型,以字节序列的方式表示字符串
python3.x中的字符串是unicode编码,以字符为单位。
字符串前加b,b'python'是bytes类型,以byte(字节)为单位,是二进制。其内容可以直接使用ASCII码,但不能是汉字
处理字符串
截取字符串
语法:
str[开始位置:结束位置]
开始位置
为正数时,从0开始,超过最大长度也不报错
为负数时,表示从右面往左数,-1表示从右面数第一个结束位置
截取字符串的位置,但不包含该元素。
为空时,表示末尾
为正数时,超过最大长度也不报错
为负数时,表示从右面往左数,-1表示从右面数第一个
不足位数补0
在电商平台生成订单号时,有位数要求,不足位数前面补0
#不足8位补0
s="%08d"%1
print(s)
常用字符串方法
https://malaoshi.top/show_1IXtF4Th0xV.html
练习
字符串模板。在发送短信、app内部消息时、注册成功邮件、找回密码邮件等,一般使用字符串模板,如:“尊敬的XXX,您好,感谢您使用本app,您的登录名是XXX,密码是XXX”
编码:将上面的模板替换为自己的名字、手机号,出生年月日通过词频分析红楼梦后40回作者是否曹雪芹
原理:每个作者都有写作习惯,如:“之乎者也”这类虚词的使用频率。分析120回每个章节中“之乎者也”出现的频率,并对比前80回和后40回的次数,即可判断后40回作者是否曹雪芹
编程:通过使用字符串函数获取“之后者也”的出现次数有些软件会对文件格式做校验,校验方式之一是对文件名的后缀做比对,如判断是否图片,就是通过比对文件名后缀是“.jpg”、“.png”等
编程:判断“head.jpg”、“1.Png”、“绩效.doc”、“全家福.JPG”,哪些文件名是图片敏感词过滤。很多社交软件、弹幕、论坛等都会有敏感词过滤。
编程:分析一段话是否包含敏感词,并把敏感词替换成*判断字符串是否数字。在使用input()函数,需要用户填写年龄、年份或电话号时,需要判断输入的字符串是否是数字(作为一只有修养的程序猿,我们需要编码严谨)
编程:判断用户输入的字符串是否是数字(需要过滤前后空格),如果是数字,转换成int型提示:
isdigit()
isdecimal()
isnumeric()很多程序有字符串长度限制,比如发微博、发短信等。
编程:当字符串超过10个字时,截取前10个
感谢帖子:
https://blog.csdn.net/u010496169/article/details/70045895