《零基础学python》---第五章 字符串及正则表达式(1,字符串常用操作)

拼接字符串

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

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

计算字符串的长度

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

len(string)

string用于指定要进行长度统计的字符串。

截取字符串

由于字符串也属于序列,所以要截取字符串,可以采用切片方法实现。通过切片方法截取字符串的语法格式如下:

string[start : end : step]

string:表示要截取的字符串。
start:表示要截取的第一个字符的索引(包括该字符),如果不指定,则默认为0.
end:表示要截取的最后一个字符的索引(不包括该字符),如果不指定,则默认为字符串的长度.
step:表示切片的步长,如果省略,则默认为1,当省略该步长时,最后一个冒号也可以省略。

>>>str1 = '人生苦短,我用Pyhon!'
>>> substr1 = str1[1]
>>> substr2 = str1[5:]
>>> substr3 = str1[:5]
>>> substr4 = str1[2:5]
>>> print('原字符串:',str1)
>>> print(substr1 + '\n' + substr2 + '\n'+ substr3 + '\n'+ substr4 )
原字符串: 人生苦短,我用Pyhon!
生
我用Pyhon!
人生苦短,
苦短,

分割、合并字符串

1.分割字符串
字符串对象的split()方法可以实现字符串分割,也就是把一个字符串按照指定的分割符切分为字符串列表。split()方法的语法格式如下:

str.split(sep, maxsplit)

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

>>> str1 = '明 日 学 院 >>> asd.fghj'
>>> print('原字符串:',str1)
原字符串: 明 日 学 院 >>> asd.fghj
>>> list1 = str1.split()                        #采用默认分隔符进行分割
>>> list2 = str1.split('>>>')                   #采用多个字符进行分割
>>> list3 = str1.split('.')                     #采用.号进行分割
>>> list4 = str1.split(' ',4)                   #采用空格进行分割,并且只分割前4个
>>> list5 = str1.split('>')                     #采用>进行分割
>>> print(list1)
['明', '日', '学', '院', '>>>', 'asd.fghj']
>>> print(list2)
['明 日 学 院 ', ' asd.fghj']
>>> print(list3)
['明 日 学 院 >>> asd', 'fghj']
>>> print(list4)
['明', '日', '学', '院', '>>> asd.fghj']
>>> print(list5)
['明 日 学 院 ', '', '', ' asd.fghj']

2.合并字符串
合并字符串和拼接字符串不同,它会将多个字符串采用固定的分隔符连接在一起。
合并字符串可以使用字符串对象的jion()方法实现,语法格式如下:

strnew = string.jion(iterable)

strnew :表示合并后生成的新字符串。
string:字符串类型,用于指定合并时的分隔符。
iterable:可迭代对象,该迭代对象中的所有元素(字符串表示)将被合并为一个新的字符串。

>>> num = ['a','b','c','d']          #好友列表
>>> tem = ' @'.join(num)             #用空格+@符号进行连接
>>> tem1 = '@'+tem                   #用于使用join()方法时,第一个元素前不加分隔符,所以需要在前面加上@符号
>>> print('您要@的好友:',tem)
您要@的好友: a @b @c @d
>>> print('您要@的好友:',tem1)
您要@的好友: @a @b @c @d

检索字符串

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

str.count(sub[,start[,end]])

str:表示原字符串。
sub:表示要检索的子字符串。
start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索。
end:可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到结尾。

>>> str1 = '12wsd231ds1dfc'
>>> print('字符串"',str1,'"中包括',str1.count('1'),'个1')
字符串" 12wsd231ds1dfc "中包括 3 个1

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

str.find(sub[,start[,end]])

str:表示原字符串。
sub:表示要检索的子字符串。
start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索。
end:可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到结尾。

>>> str1 = '12wsd231ds1dfc'
>>> print('字符串"',str1,'"中1首次出现的位置索引为:',str1.find('1'))
字符串" 12wsd231ds1dfc "中1首次出现的位置索引为:0

python的字符串对象还提供了rfind()方法,其作用与find()方法类似,只是从字符串右边开始查找。
3.index()方法
index()方法与find()方法类似,只不过使用index()方法,当指定的字符串不存在时会抛出异常。

str.index(sub[,start[,end]])

str:表示原字符串。
sub:表示要检索的子字符串。
start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索。
end:可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到结尾。
4.startswith()方法
startswith()方法用于检索字符串是否以指定子字符串开头。如果是则返回Ture,否则返回False.

str.startswith(prefix[,start[,end]])

str:表示原字符串。
prefix:表示要检索的子字符串。
start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索。
end:可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到结尾。

>>> str1 = '@a @b @c'
>>> str2=str1.startswith('@')
>>> print(str2)
True

5.endswith()方法
endswith()方法用于检索字符串是否以指定子字符串结尾。如果是则返回Ture,否则返回False.

str.endswith(suffix[,start[,end]])

str:表示原字符串。
suffix:表示要检索的子字符串。
start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索。
end:可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到结尾。

>>> str1 = '@a @b @c'
>>> str2=str1.endswith('c')
>>> print(str2)
True

字母的大小写转换

在python中,字符串对象提供了lower()方法和upper()方法进行字母的大小写转换,即可用于将大写字母转换为小写或者将小写字母转换为大写字母。
1.lower()方法
lower()方法用于将字符串中的大写字母转换为小写字母。如果字符串中没有需要转换的字符,则将原字符串返回;否则将返回一个新的字符串,将每一个需要进行小写转换的字符都转换成等价的小写字符。字符长度与原字符长度相同。lower()方法的语法格式如下:

>>> str1 = 'aBBSasdw'
>>> str2 = str1.lower()
>>> print(str2)
abbsasdw

2.upper()方法
upper()方法用于将字符串中的小写字母转换为大写字母。如果字符串中没有需要转换的字符,则将原字符串返回;否则将返回一个新的字符串,将每一个需要进行大写转换的字符都转换成等价的大写字符。字符长度与原字符长度相同。upper()方法的语法格式如下:

>>> str1 = 'aBBSasdw'
>>> str3 = str1.upper()
>>> print(str3)
ABBSASDW

去除字符串中的空格和特殊字符

用于在输入数据时,可能会无意中输入多余的空格,或在一些情况下,字符串前后不允许出现空格和特殊字符,此时就需要去除字符串中的空格和特殊字符。
1.strip()方法
strip()方法用于去掉字符串左、右两侧的空格和特殊字符,语法格式如下:

str.strip([chars])

str:为要去除空格的字符串。
chars:为可选参数,用于指定要去除的字符,可以指定多个。如果设置chars为“@.”,则去除左、右两侧包括的“@”或“.”。如果不指定chars参数,默认去除空格、制表符“\t”、回车符“\r”、换行符“\n”等。

>>> str1 = '.asd.qwer.w.r  aq.'
>>> str2 = str1.strip(".")            #去除字符串首尾的“.”
>>> print(str2)
asd.qwer.w.r  aq

2.lstrip()方法
lstrip()方法用于去掉字符串左侧的空格和特殊字符,语法格式如下:

str.lstrip([chars])

str:为要去除空格的字符串。
chars:为可选参数,用于指定要去除的字符,可以指定多个。如果设置chars为“@.”,则去除左侧包括的“@”或“.”。如果不指定chars参数,默认去除空格、制表符“\t”、回车符“\r”、换行符“\n”等。

>>> str1 = '.asd.qwer.w.r  aq.'
>>> str2 = str1.lstrip(".")            #去除字符串左侧的“.”
>>> print(str2)
asd.qwer.w.r  aq.

3.rstrip()方法
rstrip()方法用于去掉字符串右侧的空格和特殊字符,语法格式如下:

str.rstrip([chars])

str:为要去除空格的字符串。
chars:为可选参数,用于指定要去除的字符,可以指定多个。如果设置chars为“@.”,则去除右侧包括的“@”或“.”。如果不指定chars参数,默认去除空格、制表符“\t”、回车符“\r”、换行符“\n”等。

>>> str1 = '.asd.qwer.w.r  aq.'
>>> str2 = str1.rstrip(".")            #去除字符串右侧的“.”
>>> print(str2)
.asd.qwer.w.r  aq

格式化字符串

格式化字符串是指先制定一个模板,在这个模板中预留几个空位,然后再根据需要填上相应的内容。
1.使用“%”操作符
再python中,要实现格式化字符串,可以使用“%”操作符,语法格式如下:

'%[-][+][0][m][.n]格式化字符'%exp

–:可选参数,用于指定左对齐,正数前方无符号,负数前面加符号。
+:可选参数,用于指定右对齐,正数前方无符号,负数前面加符号。
0:可选参数,表示右对齐,正数前方无符号,负数前面加符号,用0填充空白处。
m:可选参数,表示占用宽度。
.n:可选参数,表示小数点后保留的位数。
格式化字符:用于指定类型。

格式化字符说明
%s字符串(采用str()显示)
%c单个字符
%d或者%i十进制整数
%x十六进制整数
%f或者%F浮点数
%r字符串(采用reor()显示)
%o八进制整数
%e指数(基底写为e)
%E指数(基底写为E)
%%字符%
>>> tem = '编号:%09d\t公司名称:%s  \t官网: http://www.%s.com'
>>> con1 = (7,'百度','baidu')
>>> con2 = (8,'阿里巴巴','alibaba')
>>> print(tem%con1)
编号:000000007	公司名称:百度 	官网: http://www.baidu.com
>>> print(tem%con2)
编号:000000008	公司名称:阿里巴巴 	官网: http://www.alibaba.com

2.使用字符串对象的format()方法
字符串对象提供了format()方法用于进行字符串格式化,语法格式如下:

str.format(args)

str:用于指定字符串的显示样式。
args:用于指定要转换的项,如果有多项,则用逗号进行分隔。

格式化字符说明
s对字符串类型格式化
d十进制整数
c将十进制整数自动转换成对应的Unicode字符
e或者E转换为科学计数法表示再格式化
g或者G自动在e和f或者E和F中切换
b将十进制整数自动转换成二进制表示再格式化
o将十进制整数自动转换成八进制表示再格式化
x或者X将十进制整数自动转换成十六进制表示再格式化
f或者F转换为浮点数( 默认小数点后6位)
%显示百分比(默认小数点后6位)
>> tem = '编号:{:0>9s}\t公司名称:{:s} \t官网: http://www.{:s}.com'
>>> con1 = tem.format('7','百度','baidu')
>>> con2 = tem.format('8','阿里巴巴','alibaba')
>>> print(con1)
编号:000000007	公司名称:百度 	官网: http://www.baidu.com
>>> print(con2)
编号:000000008	公司名称:阿里巴巴 	官网: http://www.alibaba.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值