Разделить строку только на две части

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

s = 'abcd qwrre qwedsasd zxcwsacds'

Я хочу разбить любую строку только в двух частях при первом появлении пробела. т.е. a='abcd' и b='qwrre qwedsasd zxcwsacds'

Если я использую a, b=split(' ') это дает мне ошибку, потому что слишком много значений для распаковки.

Ответы

Ответ 1

Вы можете использовать a,b = split(' ', 1).

Второй аргумент 1 - это максимальное количество расколов, которое будет выполнено.

s = 'abcd efgh hijk'
a,b = s.split(' ', 1)
print(a) #abcd
print(b) #efgh hijk

Для получения дополнительной информации о функции разделения строк см. str.split в руководстве.

Ответ 2

Из документов Python

str.split(sep = None, maxsplit = -1)

Верните список слов в строке, используя sep в качестве строки разделителя. Если задано maxsplit, выполняется максимум maxsplit (таким образом, список будет иметь максимум maxsplit + 1 элемент). Если maxsplit не указан или -1, то нет ограничений на количество разделов (все возможные расщепления сделаны).

'1 2 3'.split(maxsplit=1)
# ['1', '2 3']

Ответ 3

Вы можете использовать стандартный метод струны partition, который ищет для данного сепаратора и возвращает 3-кортеж, состоящий из части строки перед ним, самим сепаратором, а часть после него.

>>> s = 'abcd qwrre qwedsasd zxcwsacds'
>>> s.partition(' ')
('abcd', ' ', 'qwrre qwedsasd zxcwsacds')

Ответ 4

Вам не хватает еще одного параметра в вашем расколе, количества вхождений, попробуйте это;

s='abcd qwrre qwedsasd zxcwsacds'
>>> a, b = s.split(' ', 1)
>>> print(a, b)

Ответ 5

Вы можете решить эту проблему, используя выражение "звездное выражение" python.

s='abcd qwrre qwedsasd zxcwsacds'
a = s.split()
first, *second = a
second = " ".join(second)

"first" берет первый элемент списка, а "* second" берет остальные элементы.

>>> first
'abcd'
>>> second
'qwrre', 'qwedsasd', 'zxcwsacds'

Ответ 6

Попробуй это:

s = 'abcd qwrre qwedsasd zxcwsacds'
s1 = s.split()[0]
s2 = ' '.join(s.split()[1:])
print(s1)
print(s2)

Выход:

abcd
qwrre qwedsasd zxcwsacds

Или же:

new_s = ''.join([' s ' if i.isspace() else i for i in s])
a,b = new_s.replace(' s','',1).split(' s ')
print(a)
print(b)

Выход:

abcd
qwrre qwedsasd zxcwsacds

Или даже лучше разделить также на вкладки и новые строки:

a,b = s.split(None,1)
print(a)
print(b)

Выход:

abcd
qwrre qwedsasd zxcwsacds

Ответ 7

1. Вы можете разделить строку так.

a = temp.substring(0, s.indexOf(' '));
b = temp.substring(s.indexOf(' ') + 1);

2.или вы можете сделать:

a = s[0: s.find(' ')]
b = s[s.find(' ') + 1: ]

3.

a,b = s.split(' ', 1)
print(a)
print(b) 

Ответ 8

Итак, есть второй параметр, который вы можете передать, как многие указали:

>>> a, b = "foo bar".split(' ', 1)

но никто не указывает на это:

>>> a, b = "foobar".split(' ', 1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: need more than 1 value to unpack

Вы не хотите использовать это, потому что это небезопасно, если у вас не будет строки, в которой есть только одно место. Лучше разбить его, а затем проверить, сколько расколов у вас есть, а затем распаковать их:

>>> parts = "foo bar".split(' ', 1)
>>> if len(parts) == 2:
>>>    a, b = parts 

Ответ 9

#!python2

s='abcd qwrre qwedsasd zxcwsacds'

s1 = s[0: s.find(' ')]
s2 = s[s.find(' ') + 1: ]

print s1
print s2
'''
abcd
qwrre qwedsasd zxcwsacds
'''