如何在Python中分割字符串?

6 投票
2 回答
12833 浏览
提问于 2025-04-15 16:38

我看过相关文档,但还是不太明白该怎么做。

我知道我需要在字符串中有某种标识符,这样函数才能找到在哪里拆分这个字符串(或者我可以直接找到句子中的第一个空格?)。

比如说,我想把这句话:"Sico87 is an awful python developer" 拆分成 "Sico87""is an awful Python developer",该怎么做呢?

这些字符串是从数据库里取出来的(如果这有影响的话)。

2 个回答

19

使用字符串的 split 方法:

>>> "Sico87 is an awful python developer".split(' ', 1)
['Sico87', 'is an awful python developer']

它是怎么工作的:

  1. 每个字符串都是一个对象。字符串对象上有一些特定的方法,比如这里提到的 split。你可以通过 obj.<方法名>(<参数>) 的方式来调用它们。
  2. 调用 split 方法时,第一个参数是用来分隔子字符串的字符。在这个例子中,就是空格 ' '

  3. 第二个参数是指要进行分割的次数。在你的例子中,这个值是 1。如果不提供这个第二个参数,分割会尽可能多地进行:

    >>> "Sico87 is an awful python developer".split(' ')
    ['Sico87', 'is', 'an', 'awful', 'python', 'developer']
    

当然,你也可以把分割后的子字符串存储在不同的变量中,而不是放在一个列表里:

>>> a, b = "Sico87 is an awful python developer".split(' ', 1)
>>> a
'Sico87'
>>> b
'is an awful python developer'

但要注意,如果某些输入没有空格,这样做可能会出问题:

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

可以使用 partition(' ') 这个方法,它总是会返回三个部分,放在一个叫做元组的结构里。第一个部分是分隔符之前的内容,第二个部分是分隔符本身,第三个部分是分隔符之后的内容。如果某个部分不适用,它也会存在,只是内容是空字符串。

举个例子: "Sico87 is an awful python developer".partition(' ') 这个代码会返回 ["Sico87"," ","is an awful python developer"]

如果你只想要第一个部分,可以这样写:"Sico87 is an awful python developer".partition(' ')[0] 这会返回 "Sico87"

还有一种稍微复杂一点的方法是使用 split(' ',1)。这个方法的工作原理类似,但返回的部分数量是可变的。它会返回一个包含一到两个部分的元组,第一个部分是分隔符之前的内容,第二个部分是剩下的字符串(如果有的话)。

撰写回答