Разделить строку только на две части
У меня есть строка
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
'''