字符串基操
常用字符串
| import string |
| |
| |
| variable = string.ascii_lowercase |
| |
| variable = string.ascii_uppercase |
| |
| variable = string.ascii_letters |
| |
| variable = string.octdigits |
| |
| variable = string.digits |
| |
| variable = string.hexdigits |
| |
| variable = string.punctuation |
| |
| variable = string.printable |
| |
| variable = string.whitespace |
大小写转换
| st = "hello PYTHON coders" |
| |
| |
| variable = st.capitalize() |
| |
| variable = st.title() |
| |
| variable = st.swapcase() |
| |
| variable = st.lower() |
| |
| variable = st.casefold() |
| |
| variable = st.upper() |
字符串替换
| st = "Hello Python Coders" |
| |
| variable = st.replace('e', 'E') |
| variable = st.replace('e', 'E', 1) |
| |
| |
| variable = st.expandtabs(tabsize=8) |
字符串倒序
| st = "hello Python coders" |
| |
| variable = st[::-1] |
字符串统计
| st = "Hello Python Coders" |
| |
| variable = st.count('o') |
| |
| variable = st.count('o', 0, 10) |
| |
| print(len(st)) |
字符串切片

字符串切割
| |
| st.partition('l') |
| |
| st.rpartition('l') |
| |
| st.split(' ') |
| |
| st.rsplit('l') |
| |
| st.splitlines() |
字符串清理
| variable = st.lstrip() |
| variable = st.rstrip() |
| variable = st.strip() |
| variable = "00000003210Runoob01230000000".strip('0') |
字符串对齐
字符串中间对齐
| st = "hello python coders" |
| |
| variable = st.center(42, '*') |
字符串左对齐
| st = "hello python coders" |
| |
| variable = st.ljust(42, '*') |
字符串右对齐
| st = "hello python coders" |
| |
| variable = st.rjust(42, '*') |
字符串填充对齐
| st = "hello python coders" |
| |
| variable = st.zfill(42) |
字符串查找
使用 find() 方法从左往右查找
| st = "hello python coders" |
| |
| variable = st.find('e') |
| variable = st.find('e', 3) |
| variable = st.find('e', 3, 10) |
使用 rfind() 方法从右往左查找
| st = "hello python coders" |
| |
| variable = st.rfind('e') |
| variable = st.rfind('e', 6) |
| variable = st.rfind('e', 6, 10) |
| variable = st.rfind('e', 0, 10) |
使用 index() 方法从左往右查找
| st = "hello python coders" |
| |
| variable = st.index('e') |
| variable = st.index('e', 2) |
| variable = st.index('e', 2, 8) |
使用 rindex() 方法从右往左查找
| st = "hello python coders" |
| |
| variable = st.rindex('e') |
| variable = st.rindex('e', 3) |
| variable = st.rindex('e', 0, 5) |
| variable = st.rindex('e', 2, 8) |
字符串拼接
使用 “+” 号拼接
| str1 = "Hello, " |
| str2 = "World!" |
| result = str1 + str2 |
| print(result) |
使用 join() 方法拼接
| str_list = ["Hello", "World", "!"] |
| result = "".join(str_list) |
| print(result) |
字符串格式化
| st = "hello Python coders" |
| print(f"{st}") |
| print(f"{st=}") |
| |
| test = 'My name is {}' |
| |
| print(f"{test.format('jack')}") |
| |
| people = {"name": "john", "age": 33} |
| name_age = 'My name is {name}, i am {age} old!' |
| |
| print(f"{name_age.format_map(people)}") |
字符串去重
通过for循环实现去重
| name = '王李张李陈王杨张吴周王刘赵黄吴杨' |
| newname = '' |
| for char in name: |
| if char not in newname: |
| newname += char |
| print(newname) |
通过while循环实现去重
| name = '123241536718965' |
| newname = '' |
| length = len(name) - 1 |
| while True: |
| if length >= 0: |
| if name[length] not in newname: |
| newname += name[length] |
| length -= 1 |
| else: |
| break |
| print(newname) |
利用集合的特性实现去重
| name = '王李张李陈王杨张吴周王刘赵黄吴杨' |
| newname = list(set(name)) |
| |
| newname.sort(key=name.index) |
| print(''.join(newname)) |
在原字符串上删除实现去重
| name = '王李张汪李陈王杨张吴周王刘赵黄吴杨' |
| for s in name: |
| if s in name[1:]: |
| name = name[1:] |
| else: |
| name = name[1:] + name[0] |
| print(name) |
利用字典的特性实现去重
| name = '王李张李陈王杨张吴周王刘赵黄吴杨' |
| |
| mylist = list({}.fromkeys(name).keys()) |
| print(''.join(mylist)) |
字符串判断
判断以什么开头或以什么结尾
| st = "hello python coders" |
| |
| variable = st.startswith('h') |
| |
| variable = st.endswith('a') |
判断字符串大小写
| |
| variable = st.isupper() |
| |
| variable = st.islower() |
判断字符串是否是有效标识符
| |
| variable = st.isidentifier() |
判断字符串是否只由空格组成
判断字符串是否只由字母组成
判断字符串是否只由字母和数字组成
判断字符串是否只包含十进制字符
| |
| variable = st.isdecimal() |
| |
| variable = st.isdigit() |
| |
| variable = st.isnumeric() |
判断是否有打印后不可见字符
| |
| variable = st.isprintable() |
判断是否是标题格式的字符串
判断是否为空或者都是ASCII字符组成
常见的处理字符串需求
删除字符串中的所有数字
| |
| message = ''.join(list(filter(lambda x: x.isalpha(), 'abc123def4fg56vcg2'))) |
| print(message) |
判断两个字符串是否为异序词
异序词是通过重新排列不同单词或短语的字母而形成的单词或短语。如果两个字符串的 Counter 对象相等,那么它们就是相同字母异序词对。
| from collections import Counter |
| |
| s1, s2, s3 = "acbde", "abced", "abcda" |
| c1, c2, c3 = Counter(s1), Counter(s2), Counter(s3) |
| if c1 == c2: |
| print('1和2是异序词') |
| if c1 == c3: |
| print('1和3是异序词') |
| else: |
| print('1和3不是异序词') |
按照拼音顺序对中文汉字进行排序
| from xpinyin import Pinyin |
| |
| def my_sort(wordlist): |
| pin = Pinyin() |
| temp = [] |
| for item in wordlist: |
| temp.append((pin.get_pinyin(item), item)) |
| temp.sort() |
| result = [] |
| for i in range(len(temp)): |
| result.append(temp[i][1]) |
| return result |
| print(my_sort(['华为', '小米' , '苹果', '三星' ])) |
常用算法对字符串进行加密
| import hashlib |
| |
| |
| str = input('请输入要加密的字符串:') |
| |
| md5 = hashlib.md5() |
| md5.update(str.encode('utf-8')) |
| print('MD5加密:',md5.hexdigest()) |
| |
| |
| |
| sha1 = hashlib.sha1() |
| sha1.update(str.encode('utf-8')) |
| print('SHA1加密:',sha1.hexdigest()) |
| |
| |
| |
| sha256 = hashlib.sha256() |
| sha256.update(str.encode('utf-8')) |
| print('SHA256加密:',sha256.hexdigest()) |
| |
| |
| |
| import hmac |
| |
| |
| pwd = str.encode('utf-8') |
| key = 'id'.encode('utf-8') |
| h = hmac.new(key, pwd, digestmod='MD5') |
| print('更安全的MD5加密:', h.hexdigest()) |
简单加密
| in_str = 'hello' |
| out_str = '12345' |
| sm = st.maketrans(in_str, out_str) |
| print(f"制作翻译表,常与translate()函数连用。即:返回用于translate方法翻译的转换表:{st.maketrans(in_str, out_str)}") |
| print(f"str.translate方法翻译的转换表。:{st.translate(sm)}") |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!