字符串(str)
人的一生作为一个软件/项目,整个人生中使用最多的数据类型为说话/沟通!反应到程序中就是字符串的使用。
字符串就是用来描述数据的信息。
一、声明
1.单引号
info = '字符串'
2.双引号
info = "字符串"
3.三引号
info = '''可以换行的字符串'''
info = """可以换行的字符串"""
一般长字符不被当做字符串使用,都被当做注释。
总结:单引号和双引号是可以穿插使用的,但是在开发过程中的时候还是要优先使用双引号来声明字符串。
二、字符串占位符号
1. 常规字符串的拼接
- 逗号(,)
info = "我的姓名是"
info2 = "我的年龄是"
print(info, "王富贵,", info2, 18)
# 我的姓名是 王富贵, 我的年龄是 18
逗号拼接时,逗号两边的数据类型可以不同。细心地你一定发现了,这句话中我在把字符串和变量用逗号做拼接时,他们中间被空格分开了,有强迫症的小伙伴看着肯定会觉得有些不舒服,比如说我这个处女座,看到一句话中间被隔开,就总想把他们搞到一起,所以下面举例另一种拼接操作。
- 加号(+)
info = "姓名:"
info2 = "年龄:"
print(info + "王富贵," + info2 + str(18))
# 姓名:王富贵,年龄:18
不知道细心的你有没有又发现点什么,那就是最后我把18做了一个强制类型转换成了字符串。为什么呢?这就好比英语中and两边要连接词性相同的单词,我们python中在用加号(+)做字符串的拼接时,加号两边的数据类型必须都是字符串。
2. 字符串的占位符号(%)
类比生活,我去图书馆,但是我之前每次去自习室人都满了,于是我先用书占个地,告诉别人这里有人,你就不能坐了,然后我去了我直接坐那就行了。但是,一个萝卜一个坑就好,别多占,这也不是人干的事。
占位符号:顾名思义它就是占位用的,先占个位置,然后再向占得位置那里添加数据。
name = "王富贵"
gender = "女"
age = 18
print("我的姓名是:%s, 性别是:%s, 年龄是:%d" % (name, gender, age))
# 我的姓名是:王富贵, 性别是:女, 年龄是:18
- 常用的字符串占位符
占位符 | 描述 |
---|---|
%c | 格式化字符及其ASCII码 |
%s | 格式化字符串 |
%d | 格式化整数 |
%f | 格式化浮点数,可指定小数点后的精度 |
%10s | 填充后占10个字符宽度,默认右对齐展示 [%-10s 左对齐展示] |
%05d | 填充后不满足宽度的字符用0填充。例:5→ 00005 |
%5.3f | 保留小数位数(是否四舍五入), 3.1415 → 3.142 |
三、字符串切片
字符串是由一组有顺序的字符组成的。
1. 字符串字符顺序
- 顺序(从左向右):0,1,2,3… 左侧从 0 开始排列
- 倒序(从右向左):…-3 ,-2,-1 右侧从-1 开始排列
2. 基本语法
S[开始位置:结束位置:步长]
注意:
- 范围遵循左闭右开
- 步长:间隔字符数(包含当前字符自己)
s = "hellopython"
s[0:8] # hellopyt
s[0:8:1] # hellopyt
s[0:8:2] # hloy
# 字符串倒序[只设置步长为-1,字符串出现翻转]
s[::-1] # nohtypolleh
四、字符串的转义
在需要在字符中使用特殊字符时,python 用反斜杠 \ 转义字符。
这里的描述更加详细
转义符号 | 描述 |
---|---|
\n | 换行 |
\r | 回车 |
\a | 警铃 |
\t | 制表符 |
五、字符串的内建函数
1.字符串变形
方法 | 描述 |
---|---|
capitalize() | 字符串首字母大写 |
title | 标题首字母大写 |
upper | 全部大写 |
lower | 全部小写 |
swapcase | 大小写转换 |
2.剔除空格
注意:字符串内部的空格不可删除
方法 | 描述 |
---|---|
strip | 去除字符串两边的空格(默认),去除内容可以指定 |
lstrip | 去除左边的空格 |
rstrip | 去除右边的空格 |
3.格式化字符串
方法 | 描述 |
---|---|
center(width,fillchar) | 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格 |
lljust(width[, fillchar]) | 返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。 |
rjust(width,[, fillchar]) | 返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串 |
4.查询
方法 | 描述 |
---|---|
startswith(substr, beg=0,end=len(string)) | 检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。 |
endswith(suffix, beg=0, end=len(string)) | 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False. |
find(str, beg=0, end=len(string)) | 检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1 |
index(str, beg=0, end=len(string)) | 查看是否包含指定字符,没有报错 |
rfind(str, beg=0,end=len(string)) | 从右往左查询 |
rindex( str, beg=0, end=len(string)) | 从右往左查询 |
5.字符串替换
方法 | 描述 |
---|---|
replace(old, new [, max]) | 从左向右替换指定元素,可以指定个数.默认全部替换. |
6.字符串的拆分和拼接
方法 | 描述 |
---|---|
split(str="", num=string.count(str)) | 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串 |
partition | 按指定字符,将一个字符串拆分成三个字符串 |
join(seq) | 按指定字符,将多个字符串拼接成一个新的字符串 |
7.字符串混淆[初级加密/解密]
方法 | 描述 |
---|---|
maketrans() | 创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 |
translate(table, deletechars="") | 根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中 |
其他方法可以通过**dir(str)**查询
六、字符串的格式化输出
1.占位符(%形式,不推荐较麻烦)
python字符串格式化符号
占位符 | 描述 |
---|---|
%s | 格式化字符串 |
%d | 有符号整数(十进制) |
%f | 浮点数,可以指定小数点后的精度 |
%c | 字符及其ASCII码 |
%10s | 填充后占10个字符宽度,默认右对齐(%-10s默认左对齐) |
%05d | 填充后不满5个字符宽度用0填充 |
%5.3f | 保留3位小数(5表示是否四舍五入) |
格式化操作符辅助指令
符号 | 描述 |
---|---|
* | 定义宽度或者小数点精度 |
- | 用做左对齐 |
+ | 在正数前面显示加号( + ) |
< sp> | 在正数前面显示空格 |
# | 在八进制数前面显示零(‘0’),在十六进制前面显示’0x’或者’0X’(取决于用的是’x’还是’X’) |
0 | 显示的数字前面填充’0’而不是默认的空格 |
% | %%‘输出一个单一的’% |
(var) | 映射变量(字典参数) |
m.n. | m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话) |
2.使用{}作为占位符:format()
s = "python"
print("I love {}.".format(s)) # I love python.
print("Xiaoming also loves {s}.".format(s="python")) # Xiaoming loves python.
3.f-string
f-string 是 python3.6 之后版本添加的,称之为字面量格式化字符串,是新的格式化字符串的语法。这也是我平常用的最多的格式化字符串方法,很方便。
s = "python"
print(f"I love {s}.") # I love python.