извлечь последние два поля из раскола

Я хочу извлечь последние два значения поля из переменной различной длины. Например, рассмотрим три значения ниже:

fe80::e590:1001:7d11:1c7e

ff02::1:ff1f:fb6

fe80::7cbe:e61:f5ab:e62 ff02::1:ff1f:fb6

Эти три строки имеют переменную длину. Я хочу извлечь только последние два значения поля, если я разделю каждую строку разделителем:

То есть из трех строк я хочу:

7d11, 1c7e

ff1f, fb6

ff1f, fb6

Можно ли это сделать с помощьюsplit()? Я не получаю никаких идей.

Ответы на вопрос(2)

Решение Вопроса

Еслиs строка, содержащая адрес IPv6, используйте

s.split(":")[-2:]

чтобы получить последние два компонента.split() Метод вернет список всех компонентов, а[-2:] будет разрезать этот список, чтобы вернуть только последние два элемента.

 31 мая 2012 г., 19:06
@ user1411416 вы можете использовать':'.join()
 31 мая 2012 г., 19:40
@xvatar: Что касается вашего первого комментария, пожалуйста, прочитайте оIPv6 addresses чтобы увидеть, что это предложение не имеет большого смысла.
 learner31 мая 2012 г., 19:04
как я могу получить значения, разделенные:, то есть для первой строки, как я могу получить значения, такие как 7d11: 1c7e
 learner31 мая 2012 г., 19:10
человек !! я люблю stackoverflow ... спасибо
 31 мая 2012 г., 19:05
Кажется, что некоторые из разделителей являются двойными':', было бы лучше заменить все двоеточия в космос и использоватьsplit()

Ты можешь использоватьstr.rsplit() разделить справа:

>>> ipaddress = 'fe80::e590:1001:7d11:1c7e'
>>> ipaddress.rsplit(':', 2) # splits at most 2 times from the right
['fe80::e590:1001', '7d11', '1c7e']

Это позволяет избежать ненужного разбиения первой части адреса.

 31 мая 2012 г., 19:11
@JoelCornett Я думаю, что всегда полезно избегать ненужных вычислений, какими бы незначительными.
 31 мая 2012 г., 19:07
Правда, но, согласно моим испытаниям, это только на 6% быстрее.

Ваш ответ на вопрос