一、字符串基础
-
单引号和双引号都可以表示字符串 str1='ABCDEFG'
str2="ABCDEFG"
-
当句子本身有单引号时,外面用双引号 print("It's OK")
print("He said:"Hello."")#会报错
-
当句子本身有双引号时,外面用单引号 print('He said:"Hello."')
-
Python 中三引号可以将复杂的字符串进行赋值。 Python 三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。
print('''春花秋月何时了
往事知多少
小楼昨夜又东风
故国不堪回首月明中
''')
运行结果如下:
春花秋月何时了
往事知多少
小楼昨夜又东风
故国不堪回首月明中
Process finished with exit code 0
二、字符串的操作
-
拼接字符串
-
使用"+"可以对多个字符串进行拼接并产生一个字符串对象 print('a'+'b')
print(1+1) #数字和数字之间可以进行算术运算
print('1'+'1') #字符串之间进行的是拼接,而不是算术运算
print('a'+str(1)) #str()函数将参数转换为str型
print(1+int('1')) #int()函数将参数转换为int型
print(1+float('1.2')) #flat()函数将参数转换为float型
print('a'*9) #字符串可以和数字n相乘,表示打印n次
运行结果如下: ab
2
11
a1
2
2.2
aaaaaaaaa
Process finished with exit code 0
-
字符串不允许直接与其他类型的数据拼接 print('1'+1) #字符串和数字不能拼接,会报错
运行结果如下: Traceback (most recent call last):
File "E:/PC/untitled/练习/test.py", line 105, in <module>
print('1'+1) #字符串和数字不能拼接,会报错
TypeError: can only concatenate str (not "int") to str
Process finished with exit code 1
-
使用join()方法 使用join()方法 对各种数据类型中元的素进行合并拼接 “连接符”.join(列表或元组或字符串或字典)
-
返回的是一个使用连接符进行拼接的字符串 -
如果对象是列表,元组,就是以一个下标元素为单位进行拼接 -
如果对象是字符串,就是一个单词元素为单位进行拼接 -
如果对象是字典,就是以一个键为单位进行拼接 列表: str1='你好'
a = ["123", "123"]
print(str1.join(a))
运行结果如下: 123你好123
Process finished with exit code 0
字典: str1='你好'
a = {"name":"张三","age":20}
print(str1.join(a))
运行结果如下: name你好age
Process finished with exit code 0
元组: str1='你好'
a = ("张三","李四","王五")
print(str1.join(a))
print("".join(a))
运行结果如下: 张三你好李四你好王五
张三李四王五
Process finished with exit code 0
字符串: str1='你好张三'
a = 'abc'
print(a.join(str1))
print('+'.join(str1))
运行结果如下: 你abc好abc张abc三
你+好+张+三
Process finished with exit code 0
-
Python转义字符 #转义符 \n 换行符,\t 横向制表符,\v 纵向制表符,\r 回车,\f 换页
# print('c:\note1.txt') #这样打印的结果不符合预期
#解决方案 1
# print('c:\\note1.txt') #在\前面再加一个\,表示后面的\没有特殊含义
#解决方案 2
# print(r'c:\note1.txt') #在字符串的外面加一个r,表示后面的字符串不使用转义符
#解决方案 3
# print('c:/note1.txt') #在python中,/也可以表示路径
运行结果: c:
ote1.txt
c:\note1.txt
c:\note1.txt
c:/note1.txt
Process finished with exit code 0
-
字符串的长度
-
在Python中,数字、英文、小数点、下划线和空格各占一个字节 -
一个汉字所占字节由采用的编码决定;在GBK/GB2312编码中占2个字节;在UTF-8/unicode编码中占用3个字节(或4个字节) Python默认的UTF-8编码下: str1 = "人生苦短,我学Python!"
#len(string)计算字符串的长度
print(len(str1)) #14
length=len(str1.encode()) #计算UTF-8编码的字符串的长度
print(length) #28
使用GBK编码的长度: str1 = "人生苦短,我学Python!"
length=len(str1.encode('gbk'))#计算GBK编码的字符串的长度
print(length) #21
-
截取字符串
-
字符串的下标 str2='ABCDEFG'
# print(str2[2]) #python中的下标,是从0开始算起
#字符串属于不可变对象,不能修改其中的值
# str2[2]='G' #这样会报错
#打印最后一位,可以用负数下标
# print(str2[-3]) #打印倒数第三位
# print(str2[100]) #下标的值如果超过了切片的最大长度,则会报错
-
字符串的切片 string[start🔚step] 参数说明: string:表示要截取的字符串 start:表示要截取的第一个字符的索引(包含该字符),默认值为0 end:表示要截取的最后一个字符的索引(不包含该字符),默认为字符串的长度 step:表示切片的步长,如果省略,默认为1。当步长省略时,最后一个冒号也可以省略 #切片的基础写法[起始值:终止值],包含起始值,不包含终止值
str2='ABCDEFG'
# print(str2[2:4]) #取到的是CD
# print(str2[4:100]) #当切片的终止值超过了切片的长度时,就会从起始值开始,将剩余的值全部取得
# print(str2[4:]) #终止值不写时,也表示从开始值往后全取
# print(str2[:]) #起始值和终止值都不写时,表示全取
#切片可以加上步长,写法[起始值:终止值:步长],当不写步长时,步长默认为1,当步长为负数时,表示倒着取值
# print(str2[::2]) #ACEG
# print(str2[::-1]) #GFEDCBA
#print(str2[7::-1]) #如果起始值大于终止值,那么步长必须为负数才能取到值
-
切割字符串 str.split(sep,maxsplit) 把字符串分割成列表 参数说明: 返回值:分割后的字符串列表 str:要进行切割的字符串 sep:用于指定的分割符,可以包含多个字符,默认是None,即所有空字符(包含空格、换行"\n"、制表符"\t"等)。 maxsplit:可选参数,用于指定分割的次数,如果不指定或者为-1,则分割次数无限制,否则返回结果列表的元素个数最多为maxsplit+1。 str1="百 度 网 站 官 网 >>> www.baidu.com"
print("原字符串:",str1)
list1=str1.split() #使用默认分隔符进行分割
list2=str1.split('>>>') #使用多个字符符进行分割
list3=str1.split('.') #使用"."浩进行分割
list4=str1.split(' ',4) #使用空格进行分割,只分割前4个
list5=str1.split('>') #使用>进行分割
print(str(list1)+'\n'+str(list2)+'\n'+str(list3)+'\n'+str(list4)+'\n'+str(list5))
运行结果如下: 原字符串: 百 度 网 站 官 网 >>> www.baidu.com
['百', '度', '网', '站', '官', '网', '>>>', 'www.baidu.com']
['百 度 网 站 官 网 ', ' www.baidu.com']
['百 度 网 站 官 网 >>> www', 'baidu', 'com']
['百', '度', '网', '站', '官 网 >>> www.baidu.com']
['百 度 网 站 官 网 ', '', '', ' www.baidu.com']
-
检索字符串
-
count()方法用于检索指定字符串在另一个字符串中出现的次数。如果检索的字符串不存在,返回0,否则返回出现的次数。 语法如下: str.count(sub[, start[, end]]) sub:表示要检索的子字符串 start:可选参数,表示检索范围的起始位置索引,如果不指定,则从头开始 end:可选参数,表示检索范围的结束位置索引,如果不指定,则检索到结尾 str1="百 度 网 站 官 网 >>> www.baidu.com"
print(str1.count('>>>'))
print(str1.count(' '))
print(str1.count('com'))
-
find()方法 该方法用于检索是否包含指定的子字符串。如果检索的字符串不存在,则返回-1,否则返回首次出现该字符串时的索引。 str.find(sub[, start[, end]]) 参数说明: sub:表示要检索的子字符串 start:可选参数,表示检索范围的起始位置索引,如果不指定,则从头开始 end:可选参数,表示检索范围的结束位置索引,如果不指定,则检索到结尾 str1="百度网站官网>>>www.baidu.com"
print(str1.find(' '))
print(str1.find('com'))
如果只判断字符串是否存在,可以使用in关键字实现。 或者根据find()方法返回的值是否大于-1来确定是否存在。 -
rfind()方法 返回字符串最后一次出现的位置(返回在字符串中找到子字符串sub的最高索引),如果没有匹配项则返回-1。 str = "this is really a string example....wow!!!";
substr = "is";
print(str.rfind(substr))
print(str.rfind(substr, 0, 10))
print(str.rfind(substr, 10, 0))
运行结果如下: 5
5
-1
Process finished with exit code 0
-
index()方法 str.index(sub[, start[, end]]) index()方法与find()类似,只不过当指定检索的字符串不存在时,会抛出异常。 -
rindex()方法 str.rindex(sub[, start[, end]]) 与rfind()方法类似 rindex() 返回子字符串 str 在字符串中最后出现的位置,如果没有匹配的字符串会报异常 -
字符串去空格
-
strip()方法 用于去掉字符串左、右两边的空格和特殊字符 str.strip(chars) 参数说明: chars:可选参数,用于指定要去除的字符,如果不指定时,默认去除空格、制表符\t、回车符\r、换行符\n等。 str3=' A B C D E F G ' \
'H'
print(str3.strip())
str3_1='*******ABCD***EFG*********'
print(str3_1.strip('*'))
运行结果如下: A B C D E F G H
ABCD***EFG
Process finished with exit code 0
-
lstrip()方法 用于去除字符串左侧的空格和特殊字符,用法于strip()方法类似。 -
rstrip()方法 用于去除字符串右侧的空格和特殊字符,用法于strip()方法类似。 -
字符串替换 replace()方法 语法如下: str.replace(old,new[,max]) 参数: old:被替换的子字符串 new:新字符串,用于 替换old子字符串。 max:可选参数,替换的个数。不指定时默认全部替换(-1表示替换全部) str = "this is str is ng is example....wow!!!"
print (str.replace("is", "was"))
print (str.replace("is", "was", 3))
print (str.replace("is", "was", -1))
运行结果如下: thwas was str was ng was example....wow!!!
thwas was str was ng is example....wow!!!
thwas was str was ng was example....wow!!!
Process finished with exit code 0
三、Python字符串中内置函数
方法 | 描述 |
---|
string.capitalize() | 把字符串的第一个字符大写 | string.endswith(obj, beg=0, end=len(string)) | 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False. | string.isalnum() | isalnum() 方法检测字符串是否由字母和数字组成。 | string.isalpha() | 方法检测字符串是否只由字母或文字组成。 | string.isdecimal() | 检查字符串是否只包含十进制字符。这种方法只存在于unicode对象。 | string.isdigit() | 检查字符串是否只包含数字则返回 True 否则返回 False. | string.islower() | 检测字符串是否由小写字母组成 | string.isspace() | 检测字符串中只包含空格,是则返回 True,否则返回 False | string.isupper() | 检测字符串中所有的字母是否都为大写。 | string.lower() | 转换字符串中所有大写字符为小写. | max(str) | 返回字符串 str 中最大的字母. | min(str) | 返回字符串 str 中最小的字母。 | string.startswith(obj, beg=0,end=len(string)) | 检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查. | string.swapcase() | 翻转字符串中的大小写. | string.upper() | 转换字符串中的小写字母为大写. |
|