Python中strip()与split()函数的深度解析与实战应用
本文详细解析Python中strip()与split()函数的核心用法。strip()用于删除字符串首尾指定字符或空白符,支持lstrip和rstrip变体;split()则按分隔符将字符串切分为列表,支持指定分割次数及正则表达式。文章通过具体代码示例,展示了如何利用split()结合位运算实现IP地址与整数的相互转换,涵盖常见字符串处理场景。
Python中strip()与split()函数的深度解析与实战应用
许多开发者容易混淆strip和split的功能。实际上,strip意为“修剪”或“删除”,而split意为“分割”。两者功能截然不同:strip用于移除字符串中特定的字符,而split则是依据指定的分隔符将字符串切割成多个部分。接下来将对这两个函数的具体用法进行详细说明。
1. Python strip()函数介绍
函数原型
声明:s代表目标字符串,rm代表需要删除的字符序列。
s.strip(rm):删除字符串s开头和结尾处,且字符位于rm删除序列中的字符。
s.lstrip(rm):仅删除字符串s开头处,且字符位于rm删除序列中的字符。
s.rstrip(rm):仅删除字符串s结尾处,且字符位于rm删除序列中的字符。
注意事项:
(1)当rm参数为空时,默认删除字符串首尾的空白字符(包括换行符'\n'、回车符'\r'、制表符'\t'和空格' ')。
(2)rm删除序列的处理逻辑是:只要字符串边(开头或结尾)上的字符存在于rm序列中,就会被删除,直到遇到不在rm序列中的字符为止。
例如:
>>> a = ' 123' >>> a ' 123' >>> a.strip() '123'
(2)这里的rm删除序列是只要边(开头或结尾)上的字符在删除序列内,就删除掉。
例如:
>>> a = '123abc'
>>> a.strip('21')
'3abc'
>>> a.strip('12')
'3abc'
上述两种写法结果一致。
2. Python split()函数介绍
说明:
Python中没有独立的“字符”类型,只有字符串。此处提到的“字符”仅指长度为1的字符串,这样表述仅为便于理解。
此处如此书写的原因仅为了便于理解,别无他意。
(1)按单一字符进行分割,例如以‘.'为分隔符。
>>> str = ('www.google.com')
>>> print str
www.google.com
>>> str_split = str.split('.')
>>> print str_split
['www', 'google', 'com']
(2)按单一字符分割,并指定分割次数。例如以‘.'为分隔符,仅分割1次。
>>> str_split = str.split('.',1)
>>> print str_split
['www', 'google.com']
(3)split()函数后还可接正则表达式,例如:
>>> str_split = str.split('.')[0]
>>> print str_split
www
split分隔后返回一个列表,[0]表示获取该列表的第一个元素;
>>> str_split = str.split('.')[::-1]
>>> print str_split
['com', 'google', 'www']
>>> str_split = str.split('.')[::]
>>> print str_split
['www', 'google', 'com']
使用[::-1]按逆序排列,使用[::]按正序排列。
>>> str = str + '.com.cn'
>>> str
'www.google.com.com.cn'
>>> str_split = str.split('.')[::-1]
>>> print str_split
['cn', 'com', 'com', 'google', 'www']
>>> str_split = str.split('.')[:-1]
>>> print str_split
['www', 'google', 'com', 'com']
从首个元素开始截取至倒数第二个元素,即排除最后一个元素。
split()函数的典型应用场景之一:IP地址与整数的相互转换。
# 将IP地址转换为整数
>>> ip2num = lambda x:sum([256**j*int(i) for j,i in enumerate(x.split('.')[::-1])])
>>> ip2num('192.168.0.1')
3232235521
# 将整数转换为IP地址 # 数值范围在[0, 255^4]之间
>>> num2ip = lambda x: '.'.join([str(x/(256**i)%256) for i in range(3,-1,-1)]) >>> num2ip(3232235521) '192.168.0.1'
最后,Python如何实现整数与IP地址的相互转换?
>>> import socket >>> import struct >>> int_ip = 123456789 >>> socket.inet_ntoa(struct.pack(‘I',socket.htonl(int_ip)))#整数转换为ip地址 ‘7.91.205.21' >>> str(socket.ntohl(struct.unpack(“I”,socket.inet_aton(“255.255.255.255″))[0]))#ip地址转换为整数 ‘4294967295'
感谢阅读,希望本文能对大家有所帮助,感谢各位对本站的支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













