仅将字符串拆分为两部分

Abh*_*kar 23 python split

我有一个字符串

s = 'abcd qwrre qwedsasd zxcwsacds'
Run Code Online (Sandbox Code Playgroud)

我想在第一次出现空格时仅将两个部分中的任何字符串拆分..a='abcd'b='qwrre qwedsasd zxcwsacds'

如果我使用a, b=split(' ')它会给我一个错误,因为有太多的值要解压缩.

小智 23

你可以用a,b = split(' ', 1).

第二个参数1是要完成的最大拆分数.

s = 'abcd efgh hijk'
a,b = s.split(' ', 1)
print(a) #abcd
print(b) #efgh hijk
Run Code Online (Sandbox Code Playgroud)

有关字符串拆分功能的更多信息,请参阅str.split手册.


ajx*_*jxs 11

来自Python文档

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

使用sep作为分隔符字符串,返回字符串中单词的列表.如果给出maxsplit,则最多完成maxsplit拆分(因此,列表最多将包含maxsplit + 1个元素).如果未指定maxsplit或-1,则对分割数量没有限制(进行所有可能的分割).

'1 2 3'.split(maxsplit=1)
# ['1', '2 3']
Run Code Online (Sandbox Code Playgroud)

  • @sudonym那是`str.rsplit` - 从右边分开,而不是左边. (3认同)

con*_*stt 10

您可以使用标准字符串方法partition搜索给定的分隔符,并返回由其前面的字符串部分,分隔符本身和后面的部分组成的3元组.

>>> s = 'abcd qwrre qwedsasd zxcwsacds'
>>> s.partition(' ')
('abcd', ' ', 'qwrre qwedsasd zxcwsacds')
Run Code Online (Sandbox Code Playgroud)

  • @AdamSmith如果`s`中没有空格,这样会更方便,因为它仍会返回`3-tuple`. (2认同)

U10*_*ard 5

尝试这个:

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

输出:

abcd
qwrre qwedsasd zxcwsacds
Run Code Online (Sandbox Code Playgroud)

或者:

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)
Run Code Online (Sandbox Code Playgroud)

输出:

abcd
qwrre qwedsasd zxcwsacds
Run Code Online (Sandbox Code Playgroud)

或者甚至更好地拆分制表符和换行符:

a,b = s.split(None,1)
print(a)
print(b)
Run Code Online (Sandbox Code Playgroud)

输出:

abcd
qwrre qwedsasd zxcwsacds
Run Code Online (Sandbox Code Playgroud)


小智 5

您在拆分中缺少一个参数,即出现次数,请尝试此操作;

s='abcd qwrre qwedsasd zxcwsacds'
>>> a, b = s.split(' ', 1)
>>> print(a, b)
Run Code Online (Sandbox Code Playgroud)