Python初学者将String拆分为两个字符串

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'
Run Code Online (Sandbox Code Playgroud)

所以我要寻找"-""192.0.0.2-4",分裂的,但我怎样才能使第二个字符串?

Mar*_*ers 5

如果范围始终限于地址的最后一个字节(八位位组),请分割地址的最后一个点,然后将其替换为最终值:

ip_start, _, end_value = iprange.partition('-')
first_three = ip_start.rpartition('.')[0]
ip_end = '{}.{}'.format(first_three, end_value)
Run Code Online (Sandbox Code Playgroud)

我在这里使用过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'
Run Code Online (Sandbox Code Playgroud)

为了完整起见:您还可以使用该str.rsplit()方法从右侧拆分字符串,但是在这种情况下,您需要包括一个限制:

>>> first.rsplit('.', 1)
['192.0.0', '2']
Run Code Online (Sandbox Code Playgroud)

在这里,第二个参数1限制将拆分限制为.找到的第一个点。