Python入门之字符串
字符串
字符串创建:
>>> name = "chengd" >>> name = 'chengd' >>> name = """ ... chengd is good ... "Good" is 'hao' ... """ >>> >>> name '\nchengd is good\n"Good" is \'hao\'\n' >>>
注:创建字符串时必须用双引号、单引号、单双三引号引起;其中三引号中可以包含单双引号、换行
字符串常用方法:
- 字符包含判断:str1.__contains__(str2)等同str2 in str1;
-
>>> str1 = 'name' >>> str2 = 'm' >>> str2 in str1 True >>> str1.__contains__(str2) True
- 字符串相等判断:str.__eq__(str1)与 str == str1
-
>>> str1 = "name" >>> str2 = "names" >>> str1.__eq__(str2) False >>> str1 == str2 False
-
字符串格式化:str.format()
- 使用{}占位符或使用{0},{1}形式占位符
>>> "{} {} welcome to you!".format("python","world") 'python world welcome to you!' >>> "{0} {1} welcome to you!".format("python","world") 'python world welcome to you!' >>> "{1} {0} welcome to you!".format("world","python") 'python world welcome to you!'
- 使用关键字参数
>>> "NAME:{name} AGE:{age}".format(name = "chengd",age = "99") 'NAME:chengd AGE:99'
- 使用tuple,list,dict的下标
>>> list1 = ["chengd",99] >>> list1 ['chengd', 99] >>> "Name:{0[0]} Age:{0[1]}".format(list1) 'Name:chengd Age:99'
-
填充与对齐:^、<、>分别是居中、左对齐、右对齐,后面带宽度;:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充;
View Code>>> name = "chengd" >>> name 'chengd' >>> ":>20".format(name) ':>20' >>> "{:>20}".format(name) ' chengd' >>> "{:*>20}".format(name) '**************chengd' >>> "{:<20}".format(name) 'chengd ' >>> "{:*<20}".format(name) 'chengd**************' >>> "{:^20}".format(name) ' chengd ' >>> "{:*^20}".format(name) '*******chengd*******'
注:格式化宽度包含原字符串宽度和填充字符宽度
- string.capitalize():首字母大写
>>> name = "chengd" >>> name 'chengd' >>> name.capitalize() 'Chengd'
- string.casefold():大写字母变小写
>>> name = "CHENGDONG" >>> name 'CHENGDONG' >>> name.casefold() 'chengdong'
- string.center(width[,fillchar]):返回一个原字符串居中,并使用空格填充至长度 width 的新字符串。默认填充字符为空格
#width:表示字符总宽度 #fillchar:填充字符 >>> name = "python" >>> name 'python' >>> name.center(30,"*") '************python************' >>>
-
string.count('str'[,start,end]):统计字符串中指定字符str出现次数
#start表示字符串起始下标,end表示结束下标
>>> lang = "python" >>> lang 'python' >>> lang.count("p") 1 >>> lang.count("p",2,3) 0 - string.encode(encoding='UTF-8',errors='strict'):以 encoding 指定的编码格式编码字符串。errors参数可以指定不同的错误处理方案
>>> string = "python is good lang... WOW" >>> string 'python is good lang... WOW' >>> string.encode("gbk") b'python is good lang... WOW'
- string.endswith('str'[,start,end]):是否以字符str结尾;可以指定起始下标(start)和结束下标(end)
>>> string 'python is good lang... WOW' >>> string.endswith("WOW") True >>> string.endswith("WOW,0,10") False >>>
-
string.startswith('str'[,start,end]): 是否以字符str开头;可以指定起始下标(start)和结束下标(end)
>>> string 'python is good lang... WOW' >>> string.startswith("python") True >>> string.startswith("python",3) False
- string.expandtabs(num):把字符串中的 tab 符号('\t')转为空格,tab 符号('\t')默认的空格数是 8;该方法返回字符串中的 tab 符号('\t')转为空格后生成的新字符串。
>>> stra = 'abc\tabc' >>> def printa(): print(stra) print(stra.expandtabs(1)) print(stra.expandtabs(2)) print(stra.expandtabs(3)) print(stra.expandtabs(4)) print(stra.expandtabs(5)) print(stra.expandtabs(6)) print(stra.expandtabs(7)) print(stra.expandtabs(8)) print(stra.expandtabs()) >>> printa() abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc >>> #expandtabs的参数tabsize制表位的位置 #当tabsize为1时,每个字符的位置都是制表位,两个字符串之间留一个字符的长度 #当tabsize为2时,1 3 5...是制表位,字符串长度为3时,下一个字符串从第5个字符开始 #当tabsize为3时,1 4 7...是制表位,字符串长度为3时,下一个字符串从第7个字符开始
#...
#当tabsize为8时,1 9 17...是制表位,字符串长度为3时,下一个字符串从第9个字符开始
#依次类推可得上述结果
参考:http://bbs.csdn.net/topics/390501569 - string.find('str'[,start,end]):查找指定字符串str的字符下标,可指定起始结尾;存在则返回str的下标,不存在返回-1
>>> string = "python is good" >>> string 'python is good' >>> print(string.find("is")) 7 #返回查找字符首个字符的下标 >>> print(string.find("iss")) -1 >>>
-
string.index('str'[,start,end]):查找指定str字符下标索引;可指定起始结尾;不存在抛出异常
>>> string 'python is good' >>> string.index("is") 7 >>> string.index("iss") Traceback (most recent call last): File "<pyshell#126>", line 1, in <module> string.index("iss") ValueError: substring not found >>> string.index("is",0,10) 7 #返回查找字符首个字符的下标 >>>
- string.isalnum():判断字符串是否是字母和数字组成
>>> string = "chengd" >>> string 'chengd' >>> string.isalnum() True >>> string = "chengd is good" >>> string.isalnum() False #字符串只能包含字母和数字 >>> string = "chengd99" >>> string.isalnum() True >>>
- string.isalpha():判断字符串是否是纯字母组成
>>> string 'chengd99' >>> string.isalpha() False >>> string = "chengd" >>> string.isalpha() True >>>
- string.isdigit():判断字符串是否是纯数字组成
>>> string 'chengd' >>> string.isdigit() False >>> string = "chengd99" >>> string.isdigit() False >>> string = "123456789" >>> string.isdigit() True >>>
- string.islower():判断字符串中的字母否是小写
>>> string '123456789' #不能是纯数字 >>> string.islower() False >>> string = "chengd99" >>> string.islower() True #可以是字母和数字组合 >>> string = "Chengd99" >>> string.islower() False >>> string = "99chengd" >>> string.islower() True >>> string = "chengd" >>> string.islower() True >>>
-
string.title(): 字符串转换为标题格式,首字母大写其余小写
>>> string = "python" >>> string 'python' >>> string.title() 'Python' >>>
-
string.istitle():判断字符串是否是title格式(见string.title())
>>> string = "python" >>> string 'python' >>> string.title() 'Python' >>> string 'python' >>> string.istitle() False >>> string.title().istitle() True >>>
- string.isdecimal():如果 string 只包含十进制数字则返回 True 否则返回 False
>>> string = "chengd99" >>> string1 = "999" >>> string.isdecimal() False >>> string1.isdecimal() True >>>
- string.isspace(): 如果 string 中只包含空格,则返回 True,否则返回 False
>>> string1 = " " >>> string2 = "chengd is good" >>> string1.isspace() True >>> string2.isspace() False >>>
- string.isupper():如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
>>> string1 = "Chengd IS Good" >>> string2 = "CHENGD IS GOOD BOY" >>> string3 = "chengd is like python" >>> string1.isupper() False >>> string2.isupper() True >>> string3.isupper() False >>>
-
string.join(seq):以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
>>> name = "Python" >>> name 'Python' >>> "-".join(name) 'P-y-t-h-o-n'
-
string.ljust(width[,"str"]):返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串;可以指定分隔符str
>>> name 'Python' >>> name.ljust(10) 'Python ' >>> name.ljust(10,"*") 'Python****'
-
string.rjust(width[,"str"]):返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串;可以指定分隔符str
>>> name 'Python' >>> name.rjust(10) ' Python' >>> name.rjust(10,"*") '****Python'
- string.lstrip(["str"]):截掉 string 左边的空格(换行,空格);可以截掉指定字符str,默认为空格
>>> name = " python " >>> name ' python ' >>> name.lstrip() 'python ' >>> names = "***python***" >>> names.lstrip("*") 'python***'
- string.rstrip(["str"]):截掉 string右边的空格(换行,空格);可以截掉指定字符str,默认为空格
>>> name ' python ' >>> names '***python***' >>> name.rstrip() ' python' >>> names.rstrip("*") '***python'
- string.strip(["str"]):截掉 string首尾空白(空格,换行);可以截掉指定字符str,默认为空格;等同于同时执行string.rstrip(["str"])和string.lstrip(["str"])
>>> name ' python ' >>> names '***python***' >>> name.strip() 'python' >>> names.strip("*") 'python'
- string.partition(str):指定字符串包含的分隔符str,结果返回一个3元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串
>>> indexs = "https://www.pyhton.org" >>> indexs 'https://www.pyhton.org' >>> indexs.partition("://") ('https', '://', 'www.pyhton.org')
- string.lower():将字符串小写
>>> name = "ChengD99" >>> name 'ChengD99' >>> name.lower() 'chengd99'
- string.upper():将字符串大写
>>> name 'ChengD99' >>> name.upper() 'CHENGD99'
- string.maketrans(intab, outtab]):Python maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式, 第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标
#!/usr/bin/env python # -*- coding: utf-8 -*- intab = "aeiou" outtab = "12345" trantab = str.maketrans(intab, outtab) str = "aeiou is good"; print(str.translate(trantab)) #输出结果 12345 3s g44d
注:两个字符串的长度必须相同,为一一对应的关系。
- string.replace(str1, str2, num=string.count(str1)):把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次
>>> name 'python is is good' >>> name.count("is") 2 >>> name.replace("is","Is") 'python Is Is good' >>> name.replace("is","Is",1) 'python Is is good' >>> name.replace("is","Is",3) 'python Is Is good' #注:替换字符数量超出name.count("is");不会报错并且全部替换
- string.split(str, num=string.count(str)):以 str 为分隔符切片 string,如果 num有指定值,则仅分隔 num 个子字符串
>>> name 'python is is good' >>> name.split() ['python', 'is', 'is', 'good'] >>> name.split(" ",1) ['python', 'is is good'] >>> names = "chengd999" >>> names 'chengd999' >>> names.split() ['chengd999'] >>> names.split("eng") ['ch', 'd999']
注:默认分隔符为空格
- string.splitlines([keepends]):按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False(默认为False),不包含换行符,如果为 True,则保留换行符
>>> string = "a\rb\nc\r\nd\n\r" >>> string 'a\rb\nc\r\nd\n\r' >>> string.splitlines() ['a', 'b', 'c', 'd', ''] >>> string.splitlines(True) ['a\r', 'b\n', 'c\r\n', 'd\n', '\r']
- string.swapcase():将字符串中大小写互相转换
>>> name = "Python" >>> name.swapcase() 'pYTHON'


浙公网安备 33010602011771号