python中如何使用字符串

#python day06

字符串常用操作

1 拼接字符串

str1 = 'Are you seeing anyone?'
str2 = '没有,我只钟情于你'
print(str1 + '----' + str2)

字符串只允许与字符串拼接,其他类型数值需转换成字符串类型才可以拼接。

2 计算字符串的长度

str1 = 'Are you seeing anyone?'
str2 = '没有,我只钟情于你'
print(len(str1))
print(len(str2))

以上是默认情况下,len()函数计算长度时不区分大小写,所有字符只按一个字节来计算。采用GBK时汉字占2个字节,采用UTF-8时汉字占3个字节。

str1 = 'Are you seeing anyone?'
len1 = len(str1.encode())    #采用UTF-8编码
str2 = '没有,我只钟情于你'
len2 = len(str2.encode('gbk'))  #采用GBK编码
print(len1)
print(len2)


3 截取字符串

string[start:end:step]

实例01:截取身份证号码中的出生日期

idcard = '4408xx20000501xxxx'
birthday = idcard[6:10] + '年' + idcard[10:12] + '月' + idcard[12:14] + '日'
print('身份证出生日期是:'+birthday)

4 分割、合并字符串
4.1 分割字符串

str.split(sep,maxsplit)
#sep:用于指定分隔符,默认为所有空字符(空格、换行、制表符)
#maxsplit:可选参数,不指定或为-1时,分割次数没有限制
str1 = '深 圳 大 学 官 网  --- www.shenzhendaxue.edu.com'
print('原来字符串:',str1)
print('采用默认分隔符分割:',str1.split())
print('采用多个字符分割的:',str1.split('---'))
print('采用.号进行分割:',str1.split('.'))
print('采用空格分割,且分割4次:',str1.split(' ',4))
print('采用-进行分割:',str1.split('-'))
#指定一个分割符,每分割一次,没有得到内容的就会产生一个空元素,
#分割3次获得两个空字符

实例02:输出被@好友的名称(去除@符号)

str1 = '@小栗旬 @柏原崇 @彭于晏'
str2 = str1.split(' ')
print('你@的好友有:')
for item in str2:
    print(item[1:])

4.2 合并字符串

strnew = string.join(iterable)
#strnew:表示合并后新的字符串
#string:指定合并时的分隔符
#iterable:可迭代对象,该迭代对象中所有元素将被合并成为一个新的字符串

实例03:通过好友列表输出全部被@的好友

friend = ['小栗旬','柏原崇','彭于晏']
str1 = '@'.join(friend)
at = '@' + str1 #join()方法使用时第一个元素不加分隔符
print('您@的好友有:',at)

5 检索字符串
5.1 count()方法
count()方法用于检索字符串在另一个字符串中出现的次数,假如不存在则返回0

str.count(sub,start,end)
#sub:要检索的字符串
#start:从哪里开始检索,默认从头开始
#end:到哪里结束,默认结尾结束
str1 = '@小栗旬 @柏原崇 @彭于晏'
print('@出现次数',str1.count('@'))

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

str.find(sub,start,end)
#sub:要检索的字符串
#start:从哪里开始检索,默认从头开始
#end:到哪里结束,默认结尾结束
str1 = '@小栗旬 @柏原崇 @彭于晏'
print('@首次出现位置',str1.find('@'))      #结果返回0
print'!首次出现位置,'str1.find('!')#结果返回-1

5.3 index()方法
index()方法跟find()方法一样,只不过index()检索字符串不存在时会抛出异常

5.4 startwith()方法和endwith()方法
这两种方法都是用来检索指定字符串开头或者结尾是否存在,可以参考我之前的文章《逢七拍腿游戏》里面有具体实例。

6 字母的大小写转换
lower()是用来进行转换为小写字母,upper()是用来进行转换为大写字母的。
实例04:不区分大小写验证会员名字是否为唯一

#已经注册的用户名用符号'|'分割开
username1 = '|MLXG|uzi|Letme|ZiTai|xiaohu|'
username2 = username1.lower()
str1 = input('请输入你的用户名')
str2 = '|'+str1.lower() + '|'
if str2 in username1
    print('用户名已存在!')
else
    print('用户名可以注册!')    

在这里插入图片描述
7 去除字符串中的空格和特殊字符
strip()方法:去除字符串左右两侧的空格和特殊字符或者指定字符。

str.strip(str1)
#str1:指定要删除的字符,默认时为空格、制表符、换行符

rstrip():去除右侧
lstrip():去除左侧

8 格式化字符串
由于python2.6版本开始之后都使用format()方法来对字符串进行格式化,使用‘%’来格式化的方法本文就不再赘述。

str.format(args)
#str:指定字符串要显示的样式(模板)
#args:用于指定要转换的项,如果有多项时,用逗号隔开

下面来讲述如何创建模板

{index :(fill align)sign#width.precision type }  #全部为可选参数
#index:用于指定格式化对象的索引位置,从0开始,如果省略则根据值的先后顺序自动分配
#fill:用于空白处填充的字符
#align:表示对齐方式('<'时表示内容左对齐,'>'表示内容右对齐,'='表示内容右对齐,符号在内容最左侧,'^'表示内容居中,需要配合width使用)
#sign:用于指定无符号数('+'表示正数加正号,负数加负号。'-'表示正数不变,负数加负号。空格时表示正数加空格,负数加负号。)
#:对于二进制、八进制和十六进制要加上'#'会显示前缀。
#width:表示指定要占的宽度
#.percision:表示要保留的小数位数
#type:用于指定类型。
格式化字符说明
s对字符串类型格式化
d十进制整数
c将十进制整数自动转换成对应的Unicode字符
e或者E转换成科学技术法表示再格式化
g或者G自动在e和f或者E和F中切换
b将十进制转换成二进制再格式化
o将十进制转换成八进制
x或者X十进制转换成十六进制
f或者F转换成浮点数(默认小数点保留6位)
%显示百分比

实例05 格式化不同数值类型数据

import math  # 导入Python的数学模块
print('1251+3950的结果是(以货币形式显示):¥{:,.2f}元'.format(1251+3950))  # 以货币形式显示
print('{0:.1f}用科学计数法表示:{0:E}'.format(120000.1))  # 用科学计数法表示
print('π取5位小数:{:.5f}'.format(math.pi))  # 输出小数点后五位
print('{0:d}的16进制结果是:{0:#x}'.format(100))  # 输出十六进制数
print('天才是由 {:.0%} 的灵感,加上 {:.0%} 的汗水 。'.format(0.01,0.99))  # 输出百分比,并且不带小数

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值