一、字符串(String)

字符串是 Python 中最常用的数据类型。我们可以使用引号(单引号 '、双引号 " 或三引号 ''' )来创建字符串。一般单引号、双引号只写一行、三引号用于多行

目录

  1. + :字符串的连接符      * :复制当前字符串,紧跟的数字为复制的次数
  2.  字符串的长度:len( )
  3. 计算字符串的行数:str.count('\n')
  4. 切片(字符串的截取):变量[头下标:尾下标] 
  5. 字符串与列表之间的相互转换
  6. 替换字符串:replace( )
  7. 元素的查找:find( )
  8. 判断字符串是否以制定字符开头或结尾:startswith( )、endswith( )
  9. 字符串的格式化:%、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

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐