学习Python中的字符串,要记住一句话:Python中的字符串是不可变的!!!
1. 字符串的拼接
# 拼接字符串, 直接使用+
s1 = "Meng"
s2 = "Test"
s3 = s1 + s2
2. repr和str
repr()和str()均可以将数值转换成字符串,str()函数将值转化成更适于人阅读的形式,而repr()转化为供解释器读取的形式。
str()函数调用的是对象中的__str__方法来输出结果的,repr()函数调用的是对象中的__repr__方法来输出结果的。
使用print输出字符串时只能看到字符串的内容,没有引号,如果使用repr()函数对字符串进行出来,然后print,就可以看到带引号的字符串。
s = '123456'
print(str(s))
print(repr(s))
#=======output=======
123456
'123456'
3. 字符串格式化
python中字符串格式化主要有两种方式,一种是通过 % 来进行格式化,另一种是使用format方法来进行格式化。
3.1 %方式格式化
转换说明符
转换说明符 | 说明 |
---|---|
d,i | 转换为带符号的十进制形式的整数 |
o | 转换为带符号的八进制形式的整数 |
x,X | 转换为带符号的十六进制形式的整数 |
e,E | 转换为科学计数法表示的浮点数 |
f,F | 转化为十进制形式的浮点数 |
g | 智能选择使用f或e格式 |
G | 智能选择使用F或E格式 |
C | 转换为单字符(只接受整数或单字符字符串) |
r | 使用repr()将变量或表达式转换为字符串 |
s | 使用str()将变量或表达式转换为字符串 |
# %后可以使用数字来控制宽度
test_num = -666
print("test_num is %d" % test_num)
print("test_num is %o" % test_num)
print("test_num is %x" % test_num)
print("test_num is %s" % test_num)
#=======output==========
test_num is -666
test_num is -1232
test_num is -29a
test_num is -666
另外还可以通过%后面加
.数字
指定小数点之后的数字位数,如果是字符串可以指定字符串的最大字符数。这个标志被称为精度值,该值需放在最小宽度之后。
float_num = 12.030030
string = "test_str"
print("float_num is %.3f" %float_num)
print("string is %.3s" %string)
#=========output========
float_num is 12.030
string is tes
还可以利用字典,来对字符串进行格式化,用法如下:
data_dict = {'name': 'Meng', 'age': 20}
print("name is %(name)s age is %(age)d" %(data_dict))
#======output======
name is Meng age is 20
3.2 format方式格式化
使用format格式化主要有三种方式:
- 不带编号,{}
- 带数字编号,{1},{0}顺序无所谓,按索引来对应
- 带关键字,{a1},{b1}
name = "Meng"
age = 20
gender = "male"
print("name: {} age: {} gender: {}".format(name, age, gender))
print("name: {1} age: {0} gender: {2}".format(age, name, gender))
print("name: {name} age: {age} gender: {gender}".format(gender=gender, age=age, name=name))
#=========output=======
name: Meng age: 20 gender: male
name: Meng age: 20 gender: male
name: Meng age: 20 gender: male
在format传参数的时候可以使用解包来传参数,格式如下:
personal_info_list = [20, "Meng", "male"]
personal_info_dict = {"gender": "male", "name": "Meng", "age": 20}
print("name: {1} age: {0} gender: {2}".format(*personal_info_list))
print("name: {name} age: {age} gender: {gender}".format(**personal_info_dict))
#========output========
name: Meng age: 20 gender: male
name: Meng age: 20 gender: male
高级用法
符号说明
符号 | 说明 |
---|---|
b | 转换成二进制格式 |
d | 表示十进制数 |
o | 转换成八进制格式 |
x | 转换成十六进制格式 |
c | 在打印之前将整数转换成对应的unicode字符 |
e | 用科学计数法打印数字 |
g | 只能匹配,当超过六位的时候,使用科学计数法表示 |
n | 当值为整数时和‘d’相同,值为浮点数时和‘g’相同,根据区域设置插入数字分隔符 |
% | 数值乘100打印,保留6位小数,值后面有百分号 |
, | 千位分隔符,货币表示或者大数据值会用到 |
^ | 居中对齐,后面加宽度,例:{:^10d},默认宽度为10,冒号后加填充字符,不指定则是空格 |
> | 右对齐,后面加宽度,例:{:>10d},默认宽度为10,冒号后加填充字符,不指定则是空格 |
< | 左对齐,后面加宽度,例:{:<10d},默认宽度为10,冒号后加填充字符,不指定则是空格 |
+ | 表示显示数字前的符号 |
num = 666
print("Num is {:#>13d}".format(num))
print("Num is {:*^13d}".format(num))
print("Num is {:+13%}".format(num))
print("Num is {:e}".format(num))
print("Num is {:g}".format(num))
print("Num is {:x}".format(num))
#========output=======
Num is ##########666
Num is *****666*****
Num is +66600.000000%
Num is 6.660000e+02
Num is 666
Num is 29a
4. 字符串的截取(切片)
格式:字符串[开始索引: 结束索引: 步长]
截取出的字符串不包括结束索引位置的字符
步长默认为1
索引、步长均可以为负数
起始索引不写表示从头开始,结束索引不写表示到末尾结束
string = "0123456789"
print(string[2:])
print(string[:2])
print(string[0:5:2])
print(string[1::2])
print(string[::-1])
#=======output=======
23456789
01
024
13579
9876543210
5. 字符串的常用方法
title() # 将每个单词的首字母改成大写
capitalize() # 将字符串的首字母改为大写
center(n, '-') # 把字符串放在中间,两边用-补齐
lower() # 将整个字符串改为小写
upper() # 将整个字符串改为大写
strip() # 删除字符串前后的空白符
lstrip() # 删除字符串前面的空白符
rstrip() # 删除字符串后面的空白符
find() # 查找指定子串在字符串中出现的位置,如果没有找到,则返回-1
index() # 查找指定子串在字符串中出现的位置,如果没有找到则引发ValueError错误
replace() # 使用指定子串替换字符串中的目标子串,原字符串不变,返回替换后的字符串
translate() # 使用指定的翻译映射表对字符串执行替换,返回替换后的字符串
# 字符串的测试函数
startwith() # 判断字符串是否以指定的子串开头
endwith() # 判断字符串是否以指定的子串结尾
isalnum() # 是否全是字母和数字,并且至少有一个字符
isalpha() # 是否全是字母,并至少有一个字符
isdigit() # 是否全是数字,并且至少有一个字符
isspace() # 是否全是空白字符,并至少有一个字符
islower() # 判断字符串中字母是否全是小写
isupper() # 判断字符串中字母是否全是大写
istitle() # 判断字符串中单词是否首字母是大写
split() # 默认按照空格分割,另外也可以指定分割的字符
join(iterator_data) # 可迭代数据iterator_data连接成字符串
string = "This is a good example."
table = {97: 45, 101: 44}
new_string = string.replace("is", "was")
translated_string = string.translate(table)
print(string)
print(new_string)
print(translated_string)
#=======output=======
This is a good example.
Thwas was a good example.
This is - good ,x-mpl,.
早写完的忘了发了。。。补一个