⼀、 创建
s1 = 'lenovo'
s2 = "QF"
s3 = """hello lenovo"""
s4 = '''hello 亮'''
s5 = """hello
shark
"""
s6 = '''hello
world'''
⼆、简单使⽤
1.\ 转义符
testimony = 'This shirt doesn\'t fit me'
words = 'hello \nshark'
2.+ 拼接
In [1]: file_name= "成功的21个信念"
In [2]: suffix = '.txt'
In [3]: file_name = file_name + suffix
In [4]: file_name
Out[4]: '成功的21个信念.txt'
拼接只能是 字符串和字符串进⾏操作,不可以⽤ 字符串和 ⼀个字符串类型的对象相加
3.* 复制
In [6]: "-" * 10
Out[6]: '----------'
In [7]: print('*' * 10)
**********
三、取值和切⽚
1.字符串 是 Python 中的⼀个 序列类型的数据结构
存放的数据,在其内是有序的。
序列类型的特点:
2.通过索引取值,获取单个元素
In [10]: s1 = "shark"
In [11]: s1[0]
Out[11]: 's'
In [12]: s1[-1]
Out[12]: 'k'
In [13]: s1[3]
Out[13]: 'r
3. 切⽚,获取多个元素
[start:end:step]分片
#start 永远是起始索引号
#end 永远是终止索引号
#step 是可选的步长
1.⼀般操作
# 使⽤切⽚获取多个元素
In [15]: s1[0:3]
Out[15]: 'sha'
# 起始和结尾的索引号可以省略
In [16]: s1[:3]
Out[16]: 'sha'
In [17]: s1[1:]
Out[17]: 'hark'
# 索引可以使⽤ 负数
In [18]: s1[2:-1]
Out[18]: 'ar'
2.使⽤步⻓
In [19]: s2 = 'abcdefg'
In [20]: s2[::2]
Out[20]: 'aceg'
In [21]: s2[::-1]
Out[21]: 'gfedcba'
In [22]: s2[::-2]
Out[22]: 'geca'
四、字符串⽅法
1.统计序列数据的⻓度
就是获取⼀个序列数据的元素个数,这个适⽤于所有的序列类型的数据,⽐如 字符串、列表、元组。
# 获取字符串的⻓度,包含空格和换⾏符
In [25]: s3 = "a \n\t"
In [26]: len(s3)
Out[26]: 4
2.in 成员判断
In [39]: line = 'Size: 8192 MB'
In [40]: if 'Size' in line:
...: print(line)
...:
Size: 8192 MB
注意: 空的字符串总是被视为任何其他字符串的⼦串,因此"" in "abc" 将返回 True。
3.strip() 去除字符串两端的空⽩字符(空格、\t、 \n)
Out[41]: line = ' Size: 8192 MB'
In [42]: line.strip()
Out[42]: 'Size: 8192 MB'
4.split() 分割
默认使⽤空⽩字符作为分隔符(空格、\t、 \n) 和 shell 中的 awk ⼀样道理
In [47]: line
Out[47]: ' Size: 8192 MB'
In [48]: line.split()
Out[48]: ['Size:', '8192', 'MB']
In [49]: s
Out[49]: '\tab\n'
In [50]: s.split()
Out[50]: ['ab']
可以指定分隔符
In [51]: line.split(':')
Out[51]: [' Size', ' 8192 MB']
In [52]: line.split(': ')
Out[52]: [' Size', '8192 MB']
5.strip() 移除字符串两端的空⽩字符**
In [71]: line = ' Size: 8192 MB'
In [72]: line.strip()
Out[72]: 'Size: 8192 MB'
strip() 返回的是字符串,所以可以连续操作
In [73]: line.strip().split(': ')
Out[73]: ['Size', '8192 MB']
In [74]: line
Out[74]: ' Size: 8192 MB'
In [75]: k, v = line.strip().split(': ')
In [76]: k
Out[76]: 'Size'
In [77]: v
Out[77]: '8192 MB'
6.replace() 替换
In [65]: line = ' 10、命运在⾃⼰⼿⾥,⽽不是在别⼈的嘴⾥'
In [66]: line.strip() ## 先去除两端空⽩字符
Out[66]: '10、命运在⾃⼰⼿⾥,⽽不是在别⼈的嘴⾥'
In [67]: line.strip().replace('strong>', '') ##将字符串 strong> 替换为空
Out[67]: '<10、命运在⾃⼰⼿⾥,⽽不是在别⼈的嘴⾥'
In [68]: line.strip().replace('strong>', '')[1:-6]
Out[68]: '10、命运在⾃⼰⼿⾥,⽽不是在别⼈的嘴⾥'
7.startswith() 判断字符串以什么为开头
In [85]: line = 'Locator: DIMM_A2'
In [86]: line.startswith("Locator:")
Out[86]: True
8.endswith() 判断字符串以什么为结尾
In [87]: line = 'Size: 8192 MB'
In [88]: line.endswith('MB')
Out[88]: True
五、 字符串的判断
In [1]: s = '123'
In [2]: s.isdigit() # 判断是否是纯数字
Out[2]: True
In [3]: s1 = '123adb'
In [4]: s1.isalnum() # 判断是否是数字和字⺟
Out[4]: True
In [5]: s2 = 'adb'
In [6]: s2.isalpha() # 判断是否是纯字⺟
Out[6]: True
In [7]: s2.encode() # 转换为⼆进制 bytes 类型
Out[7]: b'adb'
In [8]: s4 = "亮"
In [9]: s4.encode() # 转换为⼆进制 bytes 类型,默认编码 utf-8
Out[9]: b'\xe4\xba\xae'
In [16]: b = s4.encode()
In [17]: b.hex() # bytes 转换成 16 进制
Out[17]: 'e4baae'
In [18]: b.decode() # bytes 转换成 str,默认编码utf-8
Out[18]: '亮'