Разделить строку до n-го вхождения разделителя - PullRequest
1 голос
/ 21 апреля 2020

У меня есть строка -

"one:two:three:four:five:six:seven:eight".

Теперь я хочу разбить эту строку с помощью ':', но до первых 3-х появлений ':'.

Ожидаемый результат -

['one','two','three','four:five:six:seven:eight'].

Как я могу это сделать?

Ответы [ 4 ]

7 голосов
/ 21 апреля 2020

split принимает параметр maxsplit, отличный от разделителя, который делает именно это:

s.split(':',3)
# ['one', 'two', 'three', 'four:five:six:seven:eight']
1 голос
/ 21 апреля 2020

или если вы хотите использовать пакет регулярных выражений: re

import re
re.split(':', "one:two:three:four:five:six:seven:eight", maxsplit=3)
# ['one', 'two', 'three', 'four:five:six:seven:eight']

И если вы хотите скомпилировать reg-выражение

import re
re_colon = re.compile(':')
re_colon("one:two:three:four:five:six:seven:eight", maxsplit=3)
# ['one', 'two', 'three', 'four:five:six:seven:eight']
1 голос
/ 21 апреля 2020

Вы можете использовать split для всех, а затем построить форму списка по своему желанию.

str_list = "one:two:three:four:five:six:seven:eight"
my_list = str_list.split(":")

print([my_list[0], my_list[1], my_list[2], ":".join(my_list[3:])])

Вывод будет:

['one', 'two', 'three', 'four:five:six:seven:eight']
0 голосов
/ 21 апреля 2020

Функция split в python может принимать 2 аргумента, т.е. первый аргумент - это символ, с помощью которого вы должны разбить строку. Второй аргумент - это max_split, целое число для максимального значения no. расколов.

given_string = "one:two:three:four:five:six:seven:eight"

print(given_string.split(':',3))
...