第二节:Str字符串类型
python中处理文本数据是用str类型,不像其他语言区分字符和字符串,统一使用str类型。
str在创建后是不可变的。在python中字符类型相当于长度是1的字符串类型。
以下三种方式包裹的字符都算作字符串:
- 单引号: '允许包含有 "双" 引号'
- 双引号: "允许嵌入 '单' 引号"
- 三重引号: '''三重单引号''', """三重双引号"""
三重引号创建字符串时,字符串可以跨越多行,包括三重引号包裹的所有字符。
创建字符串:
方法一:使用字面值创建字符串
例子1:
str1 = '测试字符串1'
str2 = "测试字符串2"
str3 = '''测试字符串3,
str3的第二行;
str3的第三行'''
print(str1)
print(str2)
print(str3)
结果:
测试字符串1
测试字符串2
测试字符串3,
str3的第二行;
str3的第三行
方法二:通过str构造器创建字符串
例子2:
str1 = str('测试字符串1')
print(str1)
结果:
测试字符串1
字符串的方法
str.capitalize()
首字母大写。
例子:
str1 = str('abcde')
str2 = '测试capitalize'
print(str1.capitalize())
print(str2.capitalize())
结果:
Abcde
测试capitalize
str.casefold()
消除字符串的大小写形式,都转换为小写。在一般情况下和lower()一样。
例子:
str1 = str('abCDEad')
str2 = '测试cAseFOld'
print(str1.casefold())
print(str2.casefold())
结果:
abcdead
测试casefold
str.center(width[, fillchar])
返回字符串长度是width的字符串,原字符串放在正中间。使用指定的
例子:
str1 = '测试str.center'
print(str1.center(50,'*'))
结果:
*******************测试str.center*******************
str.count(sub[, start[, end]])
返回子字符串sub 在 [start, end] 范围内非重叠出现的次数。
可选参数start 与 end 是指原字符串的起止位置。含start不含end。end为空时,默认一直到字符串尾部。如果有end参数,则必须指定start参数。
如果sub 为空,则返回字符之间的空字符串数,即字符串的长度加一。但是sub参数必须。
例子:
str1 = '测试str.countstrabstrcdstrkkk' # 26
print(str1.count('str',1,5))
print(str1.count('str',1,4))
print(str1.count('str',1,5))
print(str1.count('str',2))
print(str1.count('',2))
print(str1.count('',10))
print(str1.count(''))
print(str1.count())
结果:
1
0
1
4
26
18
28
Traceback (most recent call last):
File "D:/pythonProject/test/test20240106.py", line 9, in <module>
print(str1.count())
TypeError: count() takes at least 1 argument (0 given)
str.encode(encoding='utf-8', errors='strict')
返回编码为bytes 的字符串。
encoding 默认为 'utf-8' 。
errors 控制如何处理编码错误。在python的开发模式或调试模式下才有效,暂时不需要考虑。
例子:
str1 = '测试str.encode'
print(str1.encode())
print(str1.encode(encoding='gbk'))
结果:
b'\xe6\xb5\x8b\xe8\xaf\x95str.encode'
b'\xb2\xe2\xca\xd4str.encode'
str.endswith(suffix[, start[, end]])
判断字符串以什么结尾。
如果字符串以指定的suffix 结尾则返回True,否则返回False。参数suffix 也可以是元组。可选项start、end是起止位置。不含start含end。
例子:
str1 = '测试st的r.encode'
print(str1.endswith('e',0))
print(str1.endswith('ode',0))
print(str1.endswith('测',1,8))
print(str1.endswith('d',1,8))
print(str1.endswith('的',4,4))
print(str1.endswith('的',4,5))
print(str1.endswith('的',5,5))
print(str1.endswith('的',0,5))
结果:
D:\pythonProject\venv\Scripts\python.exe D:/pythonProject/test/test20240106.py
True
True
False
False
False
True
False
True
str.expandtabs(tabsize=8)
替换字符串中制表符。默认制表位8。
返回字符串的副本,其中所有的制表符会由一个或多个空格替换,具体取决于当前列位置和给定的制表符宽度。
每tabsize 个字符设为一个制表位(默认值 8 时设定的制表位在列 0, 8, 16 依次类推)。
如果字符为制表符\t),则会在结果中插入一个或多个空格符,直到当前列等于下一个制表位。 (制表符本身不会被复制。)
如果字符为换行符\n) 或回车符 (\r),会被正常解析为换行符或回车符,并将当前列重设为零。任何其他字符会被不加修改地复制并将当前列加一(以此往后排),不论该字符在被打印时会如何显示。
例子:
str1 = '01\t012\t0123\t01234'
str2 = 'abc\t测试0123\t01234'
str3 = '01\t01\n2\t0123\t01234'
str4 = '01\t01\r2\t0123\t01234'
print(str1.expandtabs())
print(str1.expandtabs(4))
print(str2.expandtabs())
print(str3.expandtabs())
print(str3.expandtabs())
结果:
01 012 0123 01234
01 012 0123 01234
abc 测试0123 01234
01 01
2 0123 01234
01 01
2 0123 01234
str.find(sub[, start[, end]])
返回子字符串sub 在 s[start:end] 切片内被找到的最小索引。
可选参数start 、end是起止位置。如果sub 未被找到则返回 -1。