В этом ответе используется string.split
, который кажется наиболее чистым методом по сравнению с регулярным выражением. Я смотрел на использование string.partition
, но оно выдает tuple
, что требует разделения индекса. Кроме того, вывод, связанный с string.partition
, не дает запрошенный вами вывод.
Этот первый пример берет одну строку и выводит пару строк на основе вашего запроса разделения.
# Need to get '\I1234 ' and '\I56 /I78'
name3 = '\I1234 /\I56 /I78'
# The input name (name3) can be change in a for loop linked to your input.
split_input = name3.split('/', 1) # maxsplit=1
print (split_input)
# outputs
#####################################################################
# NOTE: the escaped backslashes, which doesn't match your requirement.
#####################################################################
['\\I1234 ', '\\I56 /I78']
Исходный вывод, созданный выше, избежал обратной косой черты, поэтому этот код удаляет их.
# Need to get '\I1234 ' and '\I56 /I78'
name3 = '\I1234 /\I56 /I78'
# The input name (name3) can be change in a for loop linked to your input.
split_input = str(name3.split('/', 1)).encode('utf-8').decode('unicode_escape')
print (split_input)
# outputs
['\I1234 ', '\I56 /I78'] # Do you need that trailing space?
Я не уверен откуда ваши исходные значения (например, файл, веб-сайт и т. Д.), Поэтому я добавил значения из вашего вопроса в список для более быстрого тестирования. В следующем примере используется список списков и string.split.
my_strings = ['I1234/I56/I78', '\I1234 /I56/I78', '\I1234 /\I56 /I78', '\I1234 /\I56 /\I78', '\I78_[0]/abcd_/efg_ /I1234/I56']
# Uses list comprehension and string.split to split the elements in your strings
split_input = [x.split('/', 1) for x in my_strings]
# The original output created escaped backslashes, so this code removes them.
decode_output = (str(split_input).encode('utf-8').decode('unicode_escape'))
print (decode_output)
# outputs
[['I1234', 'I56/I78'], ['\I1234 ', 'I56/I78'], ['\I1234 ', '\I56 /I78'], ['\I1234 ', '\I56 /\I78'], ['\I78_[0]', 'abcd_/efg_ /I1234/I56']]