Python字符串常用方法总结
【注意】:
对字符串的操作方法都不会改变原来字符串的值;字符串相加之后会开辟新的空间,即形成新的字符串;(即字符串类型是不可变类型)
1、去掉空格和特殊符号
① name.strip() :方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
strip()方法语法:str.strip([chars]) 参数: chars -- 移除字符串头尾指定的字符序列。 返回值: 返回移除字符串头尾指定的字符生成的新字符串。 实例:
#!/usr/bin/python # -*- coding: UTF-8 -*- str = "00000003210Runoob01230000000"; print str.strip('0'); # 去除首尾字符 0 str2 = " Runoob "; # 去除首尾空格 print str2.strip();
运行结果:
3210Runoob0123
Runoob
② name.strip('xx') :去掉某个字符串
③ name.lstrip() :方法用于截掉字符串左边的空格或指定字符
lstrip()方法语法: str.lstrip([chars])
实例:
str = " this is string example....wow!!! "; print str.lstrip(); str = "88888888this is string example....wow!!!8888888"; print str.lstrip('8');
运行结果:
this is string example....wow!!! this is string example....wow!!!8888888
④ name.rstrip() :去掉右边的空格和换行符 【参照 lstrip() 方法的使用】
2、字符串的搜索和替换
① name.count('x') :查找某个字符在字符串里面出现的次数
name = 'xiaoming' name_num = name.count('i') print(name_num) # 2
② name.capitalize() :首字母大写
name = 'xiaoming' name_num = name.capitalize() print(name_num) # Xiaoming
③ name.center(n,'-') :将字符串居中,两边是center入参的第二个参数
name = 'xiaoming' name_go = name.center(10, '*') print(name_go) # *xiaoming*
④ name.find('x') :找到这个字符返回下标,多个时返回第一个;不存在的字符返回-1
name = 'xiaoming' name_go = name.find('i') print(name_go) # 1 name_go = name.find('p') # name字符串中不包含此字符 print(name_go)
⑤ name.index('x') :找到这个字符返回下标,多个时返回第一个;不存在的字符报错
name = 'xiaoming' name_go = name.index('i') print(name_go) # 1 name_go = name.index('p') # name字符串中不包含此字符 print(name_go) # Traceback (most recent call last): # File "C:\Users\liangshu.hu\PycharmProjects\practice\7.py", line 7, in <module> # name_go = name.index('p') # name字符串中不包含此字符 # ValueError: substring not found # 1
⑥ name.replace(oldstr, newstr) :字符串替换
name = 'xiaoming' name_go = name.replace('xi', 'd') print(name_go) # daoming
描述:pyrhon的 replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
语法: str.replace(old, new[, max])
参数:
- old -- 将被替换的子字符串。
- new -- 新字符串,用于替换old子字符串。
- max -- 可选字符串, 替换不超过 max 次。
返回值:返回字符串中的 old(旧字符串) 替换成 new(新字符串)后生成的新字符串,如果指定第三个参数max,则替换不超过 max 次。
实例1:
str_ = "this is string example....wow!!! this is really string" ''' 默认不指定旧字符串中某内容被替换的次数,则会将旧字符串中所有的符合被替换的内容全部替换,并生成新的字符串 ''' print(str_.replace("is", "was")) # thwas was string example....wow!!! thwas was really string ''' replace方法指定旧字符串中某内容被替换的次数,则会指定替换符合被替换的内容次数,并生成新的字符串 ''' print(str_.replace("is", "was", 3)) # thwas was string example....wow!!! thwas is really string
实例2:
temp_str = 'this is a test' new_temp_str = temp_str.replace('is', 'IS') ''' replace()函数会产生新的字符串且原字符串内容不变 ''' print(new_temp_str) # thIS IS a test print(temp_str) # this is a test
⑦ name.format() :字符串格式化
⑧ name.format_map(d) :字符串格式化,传进去的是一个字典
Year {} Rs. {:.2f}".format(year, value) 称为字符串格式化,大括号和其中的字符会被替换成传入 str.format() 的参数,也即 year 和 value。
其中 {:.2f} 的意思是替换为 2 位精度的浮点数。 {:5d} 的意思是替换为 5 个字符宽度的整数,宽度不足则使用空格填充。
3、字符串的测试和替换函数
① name.startswith(prefix[,start[,end]]) :是否以prefix字符开头 ,返回值为Ture或者False;且prefix字符的下标是否处于start和end之间
s = "ALEX" s1 = s.startswith("E",2,6) print(s1)
② name.endswith(suffix[,start[,end]]) :是否以suffix字符结尾,返回值为Ture或者False;且suffix字符的下标是否处于start和end之间
s = "ALEX" s1 = s.endswith("X",3,4) print(s1)
③ name.isalnum() :判断字符串是否全是字母或数字,返回值为Ture或者False
test_str01 = 'helloIam19yearsold' test_str02 = 'hello,I am 19 years old' print(test_str01.isalnum()) # True print(test_str02.isalnum()) # False
④ name.isalpha() :判断字符串是否全是字母,返回值为Ture或者False
test_str01 = 'abcdefghijklmn' test_str02 = '123asd' print(test_str01.isalpha()) # True print(test_str02.isalpha()) # False
⑤ name.isdigit() : 判断字符串是否全是数字,返回值为Ture或者False
test_str01 = '3123123' test_str02 = '123asd' print(test_str01.isdigit()) # True print(test_str02.isdigit()) # False
⑥ name.isspace() :判断字符串是否全是空白字符,返回值为Ture或者False
test_str01 = ' ' test_str02 = '123asd ' print(test_str01.isspace()) # True print(test_str02.isdigit()) # False
⑦ name.islower() :判断字符串中的字母是否全是小写 ,返回值为Ture或者False
test_str01 = 'qweqweqweqwe' test_str02 = 'WRRWRWRwfwefwef' test_str03 = '1232121WRWRR' print(test_str01.islower()) # True print(test_str02.islower()) # False print(test_str03.islower()) # false
⑧ name.isupper() :判断字符串中的的字母是否全是大写 ,返回值为Ture或者False
test_str01 = 'SFSFFFSFSF' test_str02 = 'WCDdsdsdwWDD' test_str03 = '132SFvdfv' print(test_str01.isupper()) # True print(test_str02.isupper()) # False print(test_str03.isupper()) # false
⑨ name.istitle() :判断字符串是否为首字母大写,返回值为Ture或者False【字符串中只有首字母为大写,其他字符不可为大写,否则依然是False】
test_str01 = 'Abcddasdasdasd' test_str02 = 'ACDdsdsdwWDD' test_str03 = 'AxssSSA' print(test_str01.istitle()) # True print(test_str02.istitle()) # False print(test_str03.istitle()) # false
⑩ name.swapcase() :将字符串中的所有字符的大小写反转,并输出一个新的字符串
name = "JerryHome" print(name.swapcase()) # jERRYhOME print(id(name), id(name.swapcase())) # 2422963831152 2422963831472
⑩① name.upper() :将字符串里的所有字符全部转换为大写,并输出一个新的字符串
test_str01 = 'asdfghjkl' test_str02 = 'ACDdsdsdwWDD' test_str03 = 'AxssSSA' print(test_str01.upper()) # ASDFGHJKL print(test_str02.upper()) # ACDDSDSDWWDD print(test_str03.upper()) # AXSSSSA
⑩② name.lower() :将字符串中的所有字符全部转换为小写,并输出一个新的字符串
test_str01 = 'asdfghjkl' test_str02 = 'ACDdsdsdwWDD' test_str03 = 'AxssSSA' print(test_str01.lower()) # asdfghjkl print(test_str02.lower()) # acddsdsdwwdd print(test_str03.lower()) # axssssa
4、字符串的分割
① name.split() :默认是按照空格分割;返回字符串被切割后的各个部分组成的数组
test_str01 = 'a sdf-ghj-k l' print(test_str01.split()) # ['a', 'sdf-ghj-k', 'l']
② name.split(',') :按照逗号分割;返回字符串被切割后的各个部分组成的数组
test_str01 = 'a sdf-ghj-k l' print(test_str01.split('-')) # ['a sdf', 'ghj', 'k l']
5、连接字符串
① ','.join(slit) :用逗号连接可迭代对象变成一个字符串,可迭代对象可以是字符,列表,字典。【注意】int 类型(即整型数据)不能被连接
name = "jerry" print("_".join(name)) # j_e_r_r_y name = "jerry" name1 = "*".join(name) print(name1) # j*e*r*r*y name = "jerry" print("&".join(name)) # j&e&r&r&y name = ['abc', 'def', 'ghi'] print("".join(name)) # abcdefghi name = ('abc', 'def', 'ghi') print("".join(name)) # abcdefghi name = [1, 2, 3, 4] print("".join(name)) # Traceback (most recent call last): # File "C:\Users\liangshu.hu\PycharmProjects\practice\7.py", line 20, in <module> # print("".join(name)) # TypeError: sequence item 0: expected str instance, int found
6、截取字符串(切片)
str = "0123456789" print(str[0:3]) # 截取第一位到第三位的字符 012 print(str[:]) # 截取字符串的全部字符 0123456789 print(str[6:]) # 截取第七个字符到结尾 6789 print(str[:-3]) # 截取从头开始到倒数第三个字符之前 0123456 print(str[2]) # 截取第三个字符 2 print(str[-1]) # 截取倒数第一个字符 9 print(str[::-1]) # 创造一个与原字符串顺序相反的字符串 9876543210 print(str[-3:-1]) # 截取倒数第三位与倒数第一位之前的字符 78 print(str[-3:]) # 截取倒数第三位到结尾 789 print(str[:-5:-3]) # 逆序截取 96
①通过索引(下标)可以精确的定位到某个元素
name = "今天是个好日子" # 0 1 2 3 4 5 6 # -7-6-5-4-3-2-1 a = name[0] b = name[1] print(a+b) # 今天
②切片
name = "todayisgood" # 顾头不顾尾 name[起始位置:终止位置] print(name[0:2]) # to # 起始位置和终止位置都为空默认取全部 print(name[:]) # todayisgood # 某个位置不指定的时候默认取最后或最前 print(name[:3]) # tod print(name[2:5]) # day # 起始位置必须要小于终止位置(无论正值还是负值) print(name[-2:-1]) # o print(name[-2:-3], type(name[-2:-3]), sep='\t') # 输出为空,表示空字符串 print('' == name[4:1]) # True # **[起始位置:终止位置:步长] 步长默认为1** print(name[-2:-5:-1]) # oog
name = "大黑哥吃大煎饼" print(name[1:5]) # 黑哥吃大 print(name[-2:-6:-1]) # 煎大吃哥 【注意】当步长为负数的时候,起始值可以大于终止值,因为步长为负数表示字符切片不再是从左往右,而是从右往左 print(name[-6:6]) # 黑哥吃大煎 # 切片的时候起始位置和终止位置都超出的时候不会进行报错 print(name[100:105]) print('' == name[105:110]) # True # 索引的时候索引值超出范围的时候会报错 print(name[100]) # Traceback (most recent call last): # File "C:\Users\liangshu.hu\PycharmProjects\practice\7.py", line 14, in <module> # print(name[100]) # IndexError: string index out of range
s = 'Python最NB' # 获取s字符串中前3个内容 print(s[0:3]) # 获取s字符串中第3个内容 print(s[2]) # 获取s字符串中后3个内容 print(s[-3:]) # 获取s字符串中第3个到第8个 print(s[2:8]) # 获取s字符串中第2个到最后一个 print(s[1:]) # 获取s字符串中第1,3,5个内容 print(s[0:6:2]) # 获取s字符串中第2,4,6个内容 print(s[1:7:2]) # 获取s字符串中所有内容 print(s[:]) # 获取s字符串中第4个到最后一个,每2个取一个 print(s[3::2]) # 获取s字符串中倒数第5个到最开始,每3个取一个 print(s[-5::-3]) # 输出结果 # Pyt # t # 最NB # thon最N # ython最NB # Pto # yhn # Python最NB # hnN # oy
7、string 模块
import string
string.ascii_uppercase 所有大写字母字符串--》返回值为字符串
string.ascii_lowercase 所有小写字母组成的字符串--》返回值为字符串
string.ascii_letters 所有字母【同时包含所有大写字母和所有小写字母】组成的字符串--》返回值为字符串
string.digits 所有数字组成的字符串--》返回值为字符串
string.hexdigits 所有的十六进制字符--》返回值为字符串
string.whitespace 所有的空白字符--》返回值为字符串
string.punctuation 所有的标点符号--》返回值为字符串
import string print(dir(string), end='\n\n') ''' ['Formatter', 'Template', '_ChainMap', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_re', '_sentinel_dict', '_string', 'ascii_letters', 'ascii_lowercase', 'ascii_uppercase', 'capwords', 'digits', 'hexdigits', 'octdigits', 'printable', 'punctuation', 'whitespace'] ''' print(string.ascii_uppercase, type(string.ascii_uppercase), sep='\t||\t') # ABCDEFGHIJKLMNOPQRSTUVWXYZ || <class 'str'> print(string.ascii_lowercase, type(string.ascii_lowercase), sep='\t||\t') # abcdefghijklmnopqrstuvwxyz || <class 'str'> print(string.ascii_letters, type(string.ascii_letters), sep='\t||\t') # abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ || <class 'str'> print(string.digits, type(string.digits), sep='\t||\t') # 0123456789 || <class 'str'> print(string.hexdigits, type(string.hexdigits), sep='\t||\t') # 0123456789abcdefABCDEF || <class 'str'> print(string.whitespace, type(string.whitespace), sep='\t||\t') # ' \t\n\r\x0b\x0c'|| <class 'str'> print(string.punctuation, type(string.punctuation), sep='\t||\t') # !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ || <class 'str'>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!