Python--字符串常用操作

字符串常用操作

  • 一.拼接字符串
  • 二.计算字符串的长度
  • 三.截取字符串
  • 四.分隔字符串
  • 五.检索字符串
    • 1.count()方法
    • 2.find()方法
    • 3.index()方法
    • 4.startswith()方法
    • 5.endswith()方法
  • 六.字母的大小写转换
    • 1.lower()方法
    • 2.upper()方法

一.拼接字符串

•使用“+”运算符可完成对多个字符串的拼接,“+”运算符可以连接多个字符串并产生一个字符串对象。

wx1="Fate let us meet again,this time i will not let go"
wx2="缘分让我们重新相遇,这次我不会放手"
print(wx1+'--'+wx2)
#Fate let us meet again,this time i will not let go--缘分让我们重新相遇,这次我不会放手

字符串不允许直接与其他类型的数据进行拼接。

例如,使用下面的代码将会出现错误。

str1="我今天一共走了"
num=10000
str2="步"
print(str1+num+str2)
#    print(str1+num+str2)
#TypeError: can only concatenate str (not "int") to str

要解决该问题,只需要使用str()函数将整数转换为字符串,修改后的代码如下:

str1="我今天一共走了"
num=10000
str2="步"
print(str1+str(num)+str2)
#我今天一共走了10000步

二.计算字符串的长度

•由于不同字符所占字节数不同,所以要计算字符串的长度需要先了解各字符所占的字节数。
•在Python中,数字、英文,小数点,下划线和空格占1字节;一个汉字可能会占2-4字节,占几字节取决于采用的编码。
•汉字在GBK/GB2312编码中占2字节,在UTF-8/Unicode中一般占3字节(或4字节)。Python一般默认为UTF-8进行编码。

在Python中,提供了len()函数计算字符串的长度,语法格式如下:

len(string)

•其中,string用于指定要进行长度统计的字符串。
•例如,定义一个字符串,然后用len()函数计算该字符串的长度,代码如下:

str="wxl,感谢有你!"
length=len(str)
print(length)
#9

•从上面的结果可以看出,在默认情况下,通过len()函数计算字符串的长度时,不区分英文,数字和汉字,所有字符都认为是一个字节。

但在实际开发中,当使用的编码不同时,所占的字节数也会不同。
•采用UTF-8编码时,汉字(中文标点符号)占3字节。
•采用GBK或者GB2312编码时,汉字(中文标点符号)占2字节。
这时,可以通过encode()方法编码后在进行获取,看个例子:

'''计算UTF-8编码的字符串长度'''
str="wxl,感谢有你!"
length=len(str.encode())
print(length)
#19

'''计算GBK编码的字符串长度'''
str="wxl,感谢有你!"
length=len(str.encode('gbk'))
print(length)
#14

三.截取字符串

由于字符串也属于序列,所以要截取字符串,可以采用切片方法实现。通过切片方法截取字符串的语法格式如下:
string[start: end: step]
•string:表示要截取的字符串。
•start:表示要截取的第一个字符的索引(包括该字符),如果不指定,则默认为0。
•end:表示要截取的最后一个字符的索引(不包括该字符),如果不指定则默认为字符串的长度。
•step:表示切片的步长,如果省略,则默认为1,当省略该步长时,最后一个冒号也可以省略。

字符串的索引和序列的索引一样。

例如,定义一个字符串,然后应用切片方法截取不同长度的子字符串并输出,代码如下:

str="wxl,感谢有你!"
subs1=str[1]        #截取第2个字符
subs2=str[5:]       #从第6个字符开始截取
subs3=str[:5]       #从左边开始截取5个字符
subs4=str[2:5]      #截取第3个到底5个字符
print("原字符串:",str)
print(subs1+'\n'+subs2+'\n'+subs3+'\n'+subs4)
'''
原字符串: wxl,感谢有你!
x
谢有你!
wxl,感
l,感
'''

四.分隔字符串

split()方法可以实现字符串的分隔,即把一个字符串按照指定的分隔符切分为字符串列表,该列表中的元素不包括分隔符。

语法格式:
str.split(sep,maxsplit)
•表示要进行分隔的字符串。
•sep:用于指定分隔符,可以包含多个字符,默认为None,即所有的空字符(包括空格、换行符’\n’、制表符’\t’等。)
•maxsplit:可选参数,用于指定分隔的次数,如果不指定或者为-1,则分隔次数没有限制,否则返回结果列表的元素个数最多为maxsplit+1。

在split()方法中,如果不指定sep参数,那么也不能指定maxsplit参数。

•返回值:分隔后的字符串列表。

例如,定义一个字符串,然后用split()方法根据不同的分隔符进行分隔,代码如下:

str='我 们 是 学 生 >>> we.are.students'
print('原字符串:',str)
list1=str.split()                #采用默认分隔符进行分隔
list2=str.split('>>>')           #采用多个字符进行分隔
list3=str.split('.')             #采用.号进行分隔
list4=str.split(' ',4)           #采用空格进行分隔,并且只分隔前四个
print(list1,'\n',list2,'\n',list3,'\n',list4)
list5=str.split('>')             #采用>号进行分隔
print(list5)
'''
原字符串: 我 们 是 学 生 >>> we.are.students
['我', '们', '是', '学', '生', '>>>', 'we.are.students']  ['我 们 是 学 生 ', ' we.are.students'] 
['我 们 是 学 生 >>> we', 'are', 'students'] 
['我', '们', '是', '学', '生 >>> we.are.students']
['我 们 是 学 生 ', '', '', ' we.are.students']
'''

说明:在使用split()方法时,如果不指定参数,默认采用空格符进行分隔,这时无论有几个空格,空格符都将一个分隔符进行分隔。
如果指定一个分隔符,那么当这个分隔符出现多个时,就会每个分隔一次,没有得到内容的,将产生一个空元素。例如,上面结果中的最后一行,就会出现了两个空元素。

五.检索字符串

1.count()方法

count()方法用于检索指定字符串在另一个字符串中出现的次数。如果检索的字符串不存在,则返回0,否则返回出现的次数。

其语法格式如下:
str.counnt(sub[, start[, end]])
参数说明如下:
•str:表示原字符串。
•sub:表示要检索的子字符串。
•start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索。
•end:可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到结尾。
例如,检索下面代码中所出现的w的次数:

str="wxchgwjyw"
print('字符串”'+str+'’中包括',str.count('w'),'个w符号')
#字符串”wxchgwjyw’中包括 3 个w符号

2.find()方法

该方法用于检索是否包含指定的子字符串。如果检索的字符串不存在,则返回-1,否则返回首次出现该子字符串时的索引。

其语法格式如下:
str.find[sub[ ,start[ ,end]])
参数说明如下:
•str:表示原字符串。
•sub:表示要检索的子字符串。
•start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索。
•end:可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到结尾。
例如,检索下面代码中w符号出现的索引:

str="wxchgwjyw"
print('字符串”'+str+'’首次出现w符号的位置索引为:',str.find('w'))
#字符串”wxchgwjyw’首次出现w符号的位置索引为: 0

说明:如果只是想要判断指定的字符串是否存在,可以使用in关键字实现。如果存在就返回True,否则返回False。另外,也可以根据find()方法的返回值是否大于-1来确定是否存在。

3.index()方法

index()方法同find()方法类似,也是用于检索是否包含指定的子字符串。只不过如果使用index()方法,当指定的字符串不存在时会抛出异常。

其语法格式如下:
str.index(sub[ ,start [ ,end] ])
•str:表示原字符串。
•sub:表示要检索的子字符串。
•start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索。
•end:可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到结尾。

4.startswith()方法

该方法用于检索字符串是否以指定子字符串开头,如果是则返回True,否则返回False。

其语法格式如下:
str.startswith(prefix[ , start[ , end ] ])
参数说明如下:
•str:表示原字符串。
•prefix:表示要检索的子字符串。
•start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索。
•end:可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到结尾。

例如,定义一个字符串,然后应用startswith()方法检索该字符串是否以“w“符号开头,代码如下:

str1='wkjhfswjir'
print(str1.startswith("w"))
#True

5.endswith()方法

该方法用于检索字符串是否以指定子字符串结尾,如果是则返回True,否则返回False。

其语法格式如下:
str.startswith(suffix[ , start[ , end ] ])
参数说明如下:
•str:表示原字符串。
•suffix:表示要检索的子字符串。
•start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索。
•end:可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到结尾。

例如,定义一个字符串,然后应用endswith()方法检索该字符串是否以“.com“符号结尾,代码如下:

str1="www.chaoxing.com"
print(str1.endswith(".com"))
#True

六.字母的大小写转换

1.lower()方法

lower()方法用于将字符串中的全部大写字母转换为小写字母。如果字符串中没有应该被转换的字符,则将原字符串返回;否则将返回一个新的字符串,将原字符中每个该进行小写转换的字符都转化成等价的小写字符。字符长度与原字符长度相等。

语法格式如下:
str.lower(),str为要进行转换的字符串。
例如:

str1="WWw.cHAoxiNG.coM"
print("原字符串:",str1)
print("新字符串",str1.lower())
#原字符串: WWw.cHAoxiNG.coM
#新字符串 www.chaoxing.com

2.upper()方法

upper()方法用于将字符串中的全部小写字母转换为大写字母。如果字符串中没有应该被转换的字符,则将原字符串返回;否则将返回一个新的字符串,将原字符中每个该进行大写转换的字符都转化成等价的大写字符。字符长度与原字符长度相等。

语法格式如下:
str.upper(), str为要进行转换的字符串。
例如:

str1="WWw.cHAoxiNG.coM"
print("原字符串:",str1)
print("新字符串",str1.upper())
#原字符串: WWw.cHAoxiNG.coM
#新字符串 WWW.CHAOXING.COM

你可能感兴趣的:(笔记,python)