Lor*_*tta 0 python string split string-split
我有一个IP范围192.0.0.2-4作为字符串,并想将其分成两个新字符串
ip_start = '192.0.0.2'
ip_end = '192.0.0.4'
所以我要寻找"-"的"192.0.0.2-4",分裂的,但我怎样才能使第二个字符串?
如果范围始终限于地址的最后一个字节(八位位组),请分割地址的最后一个点,然后将其替换为最终值:
ip_start, _, end_value = iprange.partition('-')
first_three = ip_start.rpartition('.')[0]
ip_end = '{}.{}'.format(first_three, end_value)
我在这里使用过str.partition(),str.rpartition()因为您只需要拆分一次即可。这种情况下的方法要快一些。这些方法始终返回3个字符串;分区字符串之前的所有内容,分区字符串本身以及之后的所有内容。由于我们只需要.分区的第一个字符串,因此我在此处使用索引来选择要分配的字符串。
由于您不需要保留该破折号或点,因此将它们分配给名为的变量_;这只是一个约定,用于表示您将完全忽略该值。
演示:
>>> iprange = '192.0.0.2-4'
>>> iprange.partition('-')
('192.0.0.2', '-', '4')
>>> iprange.partition('-')[0].rpartition('.')
('192.0.0', '.', '2')
>>> ip_start, _, end_value = iprange.partition('-')
>>> first_three = ip_start.rpartition('.')[0]
>>> ip_end = '{}.{}'.format(first_three, end_value)
>>> ip_start
'192.0.0.2'
>>> ip_end
'192.0.0.4'
为了完整起见:您还可以使用该str.rsplit()方法从右侧拆分字符串,但是在这种情况下,您需要包括一个限制:
>>> first.rsplit('.', 1)
['192.0.0', '2']
在这里,第二个参数1限制将拆分限制为.找到的第一个点。