一、字符串基础操作
Python中字符串是不可变对象,但是可以通过一些基本操作对字符串进行修改、拼接、截取等操作。具体包括:
1、字符串索引:通过索引获取字符串中某个位置的字符,如s='Hello',s[0]就是'H'
s = 'Hello' print(s[0])
2、字符串切片:通过切片获取部分位置的字符,如s='Hello',s[1:3]就是'el'
s = 'Hello' print(s[1:3])
3、字符串拼接:使用"+"操作符将两个或多个字符串拼接在一起,如s1='Hello',s2='World',s1+s2就是'HelloWorld'
s1 = 'Hello' s2 = 'World' print(s1 + s2)
4、字符串重复:使用"*"操作符将一个字符串重复多次,如s='Hello',3*s就是'HelloHelloHello'
s = 'Hello' print(3 * s)
二、字符串格式化
Python中提供了多种字符串格式化的方式,具体包括:
1、字符串格式化表达式:使用"%"操作符对字符串进行格式化,如s = 'I am %s, and %d years old.' % ('Tom', 18),结果为'I am Tom, and 18 years old.'
s = 'I am %s, and %d years old.' % ('Tom', 18) print(s)
2、str.format方法:使用{}占位符进行字符串格式化,如s = 'I am {}, and {} years old.'.format('Tom', 18),结果为'I am Tom, and 18 years old.'
s = 'I am {}, and {} years old.'.format('Tom', 18) print(s)
3、f-string方法:使用f前缀对字符串进行格式化,如name = 'Tom', age = 18,s = f'I am {name}, and {age} years old.',结果为'I am Tom, and 18 years old.'
name = 'Tom' age = 18 s = f'I am {name}, and {age} years old.' print(s)
三、字符串常用方法
Python中提供了多个字符串处理的方法,常用方法包括:
1、字符串长度len():获取字符串的长度
s = 'Hello' print(len(s))
2、字符串查找find()方法:查找指定字符串出现的位置,如果找到则返回索引值,否则返回-1
s = 'Hello' print(s.find('llo')) print(s.find('xxx'))
3、字符串替换replace()方法:将指定字符串替换为另一个字符串
s = 'Hello' print(s.replace('llo', 'rld'))
4、字符串分割split()方法:将字符串按照指定分隔符进行切分,返回一个列表
s = 'Hello,World' print(s.split(','))
5、字符串大小写转换lower()/upper()方法:将字符串全部转为小写/大写
s = 'HeLLo' print(s.lower()) print(s.upper())
四、字符串正则表达式
正则表达式是一种用于匹配文本的模式,Python中提供了re模块用于支持正则表达式的处理。常用正则表达式符号包括:
1、字符匹配:如s = 'apple',re.findall('a.', s)返回['ap'],'.'表示匹配任意一个字符
import re s = 'apple' print(re.findall('a.', s))
2、字符集合匹配:如s = 'apple',re.findall('[aeiou]', s)返回['a', 'e'],'[aeiou]'表示匹配集合中任意一个字符
import re s = 'apple' print(re.findall('[aeiou]', s))
3、重复匹配:如s = 'aabbcc',re.findall('a+', s)返回['aa'],'+'表示匹配前面的字符(或字符集合)重复一次或多次
import re s = 'aabbcc' print(re.findall('a+', s))
4、分组与引用:如s = 'apple:banana',re.findall('(\w+):(\w+)', s)返回[('apple', 'banana')],'(\w+)'表示匹配一个单词字符(字母、数字、下划线)一次或多次,并将匹配结果以元组的形式返回
import re s = 'apple:banana' print(re.findall('(\w+):(\w+)', s))
五、字符串加解密
加解密是指将原始数据进行加密或解密处理,保障数据传输和存储的安全性。Python中提供了多个常用的加解密模块,包括:
1、base64模块:将二进制数据进行base64编码或解码
import base64 data = b'Hello' # base64编码 b64_data = base64.b64encode(data) print(b64_data) # base64解码 origin_data = base64.b64decode(b64_data) print(origin_data)
2、hashlib模块:常用哈希算法包括MD5、SHA1等,将原始数据进行哈希处理,并生成摘要信息
import hashlib data = b'Hello' # MD5哈希 md5 = hashlib.md5() md5.update(data) print(md5.hexdigest()) # SHA1哈希 sha1 = hashlib.sha1() sha1.update(data) print(sha1.hexdigest())
3、pycryptodome模块:常用对称加密算法包括AES、DES等,使用密码对原始数据进行加密、解密处理
from Crypto.Cipher import AES from Crypto.Random import get_random_bytes data = b'HelloWorld' # 随机生成16字节的密码 key = get_random_bytes(16) # 使用AES CBC模式进行加密 cipher = AES.new(key, AES.MODE_CBC) ct_data = cipher.encrypt(data) print(ct_data) # 使用AES CBC模式进行解密 cipher = AES.new(key, AES.MODE_CBC, iv=cipher.iv) pt_data = cipher.decrypt(ct_data) print(pt_data)
六、字符串处理实例
实例:给定一个字符串,统计其中英文单词出现的频率,并按照频率从高到低进行排序输出
import re s = 'The quick brown fox jumps over the lazy dog' # 先将字母数字字符外的其他字符替换为空格 s = re.sub('[^a-zA-Z0-9]', ' ', s) # 将字符串按照空格进行分割,并统计单词出现的频率 freq = {} for word in s.split(): freq[word] = freq.get(word, 0) + 1 # 按照频率从高到低进行排序输出 sorted_freq = sorted(freq.items(), key=lambda x: x[1], reverse=True) for word, count in sorted_freq: print(f'{word}: {count}')
七、结语
以上仅是Python中字符串处理的一些常用操作和使用示例,Python中还有很多强大的字符串处理模块和方法,能够满足各种复杂的业务需求。