Python基础(2)——字符串(String)的定义与基本操作
·
一、字符串(String)
字符串是 Python 中最常用的数据类型。我们可以使用引号(单引号 '、双引号 " 或三引号 ''' )来创建字符串。一般单引号、双引号只写一行、三引号用于多行
目录
- + :字符串的连接符 * :复制当前字符串,紧跟的数字为复制的次数
- 字符串的长度:len( )
- 计算字符串的行数:str.count('\n')
- 切片(字符串的截取):变量[头下标:尾下标]
- 字符串与列表之间的相互转换
- 替换字符串:replace( )
- 元素的查找:find( )
- 判断字符串是否以制定字符开头或结尾:startswith( )、endswith( )
- 字符串的格式化:%、format()
1、+ :字符串的连接符 * :复制当前字符串,紧跟的数字为复制的次数
>>> str='Hello'
>>> print(str+"World") #字符串的连接
HelloWorld
>>> print(str*2) #字符串的复制
HelloHello
2、字符串的长度:len( )
>>> str1='1234ghb'
>>> len(str1)
7
3、计算字符串的行数:str.count('\n')
str=''''njsncdv
和生不逢时大V
sadvvc'''
print(repr(str)) #repr():显示看不见的符号
print("str 的行数为:",str.count("\n")+1) #最后一行没有换行符号,故加1
运行结果:
"'njsncdv\n和生不逢时大V\nsadvvc"
str 的行数为: 3
4、切片(字符串的截取):变量[头下标:尾下标]
>>> str2='12345ghbd134'
>>> str2[0] #输出字符串的第一个字符
'1'
>>> str2[-1] #输出字符串的最后一个字符
'4'
>>> str2[2:5] #输出从第三个开始到第五个的字符(含左不含右)
'345'
>>> str2[:3] #输出从第一个开始到第三个的字符
'123'
>>> str2[6:] #输出从第七个开始后的所有字符
'hbd134'
>>> str2[:]
'12345ghbd134'
5、字符串与列表之间的相互转换:split( )、join( )
>>> a='123\nabc\n456'
>>> a1=a.split('\n') #将字符串a以 \n 分割成 列表a1
>>> print(a1)
['123', 'abc', '456']
>>> a2='\n'.join(a1) #将列表a1以 \n 连接成 字符串a2
>>> print(a2)
123
abc
456
>>> a2=repr('\n'.join(a1)) #repr() 显示看不见的内容
>>> print(a2)
'123\nabc\n456'
6、替换字符串:replace( )
>>> a='1234'
>>> a.replace('2','9') #将字符串a 的 2 替换成 9
'1934'
>>> b='1231234571'
>>> b.replace('1','8',2) # 2 代表替换次数
'8238234571'
7、元素的查找:find( )
>>> str='123ghb12a'
>>> str.find('1') #正向查找'1',返回第一个'1'的下标
0
>>> str.rfind('1') #反向查找'1',返回第一个'1'的下标
6
>>> str.find('2',3) #查找从第四个字符开始的'2'
7
8、判断字符串是否以制定字符开头或结尾:startswith( )、endswith( )
>>> str='123yhna9'
>>> str.startswith('1') #判断字符串str是否以字符 '1' 开头
True
>>> str.endswith('5') #判断字符串str是否以字符 '5' 结尾
False
9、字符串的格式化:%、format()
9.1> 在 Python中,%
运算符就是用来格式化字符串的。在字符串内部,%s
表示用字符串替换,%d
表示用整数替换,%f
表示用浮点数替换,%x
表示用十六进制整数替换。有几个 %?
占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个 %?
,括号可以省略。
>>> 'Hello, %s' % 'world'
'Hello, world'
>>> "%12s%6s%4d%13s"%("zhangsan","male",20,"13312979221")
' zhangsan male 20 13312979221' #默认右对齐
>>> "%-12s%-6s%-4d%-13s"%("zhangsan","male",20,"13312979221")
'zhangsan male 20 13312979221 ' #%后加'-',则为左对齐
>>> "%5.2f"%2.5 #'5'表示占5位,2表示保留两位小数
' 2.50'
如果你不太确定应该用什么,%s
永远起作用,它会把任何数据类型转换为字符串:
>>> 'Age: %s. Gender: %s' % (25, True)
'Age: 25. Gender: True'
9.2> 另一种格式化字符串的方法是使用字符串的 format()
方法,它会用传入的参数依次替换字符串内的占位符{0}
、{1}
……,不过这种方式写起来比 %
要麻烦得多:
>>> 'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)
'Hello, 小明, 成绩提升了 17.1%'
>>> "{:12s}{:8s}{:5.1f}{:5d}{:15s}".format('zhangsan','male',50,20,'13392019987')
'zhangsan male 50.0 2013392019987 ' #默认字符串左对齐,数字右对齐
#':'前加上序号,则可实现使用符号去复制其对应的值
>>> "{0:12s}{1:8s}{2:-5.1f}{3:-5d}{4:15s}{0:20s}".format('zhangsan','male',50,20,'13392019987') #可以看出,添加'-'并不能改变其对齐方式
'zhangsan male 50.0 2013392019987 zhangsan '
二、字符串的应用实例
ping_str='''正在 Ping www.a.shifen.com [220.181.112.244] 具有 32 字节的数据:
来自 220.181.112.244 的回复: 字节=32 时间=35ms TTL=55
来自 220.181.112.244 的回复: 字节=32 时间=28ms TTL=55
来自 220.181.112.244 的回复: 字节=32 时间=33ms TTL=55
来自 220.181.112.244 的回复: 字节=32 时间=37ms TTL=55
220.181.112.244 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 28ms,最长 = 37ms,平均 = 33ms'''
#算长度
print("ping_str 的长度为:",len(ping_str))
print('-------------------------------------')
#算行数
#print(repr(ping_str))
print("ping_str 的行数为:",ping_str.count("\n")+1)
print('-------------------------------------')
#切片——截取百度的IP地址
start=ping_str.find("220")
end=ping_str.find("]")
baidu_ip=ping_str[start:end]
print("百度的IP 地址为:",baidu_ip)
print('-------------------------------------')
#切片——截取TTL的值
start1=ping_str.find("L")
end1=ping_str.find("\n",start1)
print("TTL 值为:",ping_str[start1+2:end1])
print('-------------------------------------')
#将字符串转换为列表
list=ping_str.split("\n")
print(list)
print('--------------------------------------')
#将列表用\n连接起来
str='\n'.join(list)
print(str)
print('-------------------------------------')
#替换字符串——将百度的IP地址替换成6.6.6.6
re_str=ping_str.replace(baidu_ip,"6.6.6.6")
print(re_str)
运行结果:
ping_str 的长度为: 359
-------------------------------------
ping_str 的行数为: 10
-------------------------------------
百度的IP 地址为: 220.181.112.244
-------------------------------------
TTL 值为: 55
-------------------------------------
['正在 Ping www.a.shifen.com [220.181.112.244] 具有 32 字节的数据:', '来自 220.181.112.244 的回复: 字节=32 时间=35ms TTL=55', '来自 220.181.112.244 的回复: 字节=32 时间=28ms TTL=55', '来自 220.181.112.244 的回复: 字节=32 时间=33ms TTL=55', '来自 220.181.112.244 的回复: 字节=32 时间=37ms TTL=55', '', '220.181.112.244 的 Ping 统计信息:', ' 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),', '往返行程的估计时间(以毫秒为单位):', ' 最短 = 28ms,最长 = 37ms,平均 = 33ms']
--------------------------------------
正在 Ping www.a.shifen.com [220.181.112.244] 具有 32 字节的数据:
来自 220.181.112.244 的回复: 字节=32 时间=35ms TTL=55
来自 220.181.112.244 的回复: 字节=32 时间=28ms TTL=55
来自 220.181.112.244 的回复: 字节=32 时间=33ms TTL=55
来自 220.181.112.244 的回复: 字节=32 时间=37ms TTL=55
220.181.112.244 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 28ms,最长 = 37ms,平均 = 33ms
-------------------------------------
正在 Ping www.a.shifen.com [6.6.6.6] 具有 32 字节的数据:
来自 6.6.6.6 的回复: 字节=32 时间=35ms TTL=55
来自 6.6.6.6 的回复: 字节=32 时间=28ms TTL=55
来自 6.6.6.6 的回复: 字节=32 时间=33ms TTL=55
来自 6.6.6.6 的回复: 字节=32 时间=37ms TTL=55
6.6.6.6 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 28ms,最长 = 37ms,平均 = 33ms
更多推荐
所有评论(0)