Python基础(10)——字符串

学习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,.

早写完的忘了发了。。。补一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值