您的位置:

Python字符串应用示例

一、字符串基础操作

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中还有很多强大的字符串处理模块和方法,能够满足各种复杂的业务需求。