如何在Python中分割字符串?
我看过相关文档,但还是不太明白该怎么做。
我知道我需要在字符串中有某种标识符,这样函数才能找到在哪里拆分这个字符串(或者我可以直接找到句子中的第一个空格?)。
比如说,我想把这句话:"Sico87 is an awful python developer"
拆分成 "Sico87"
和 "is an awful Python developer"
,该怎么做呢?
这些字符串是从数据库里取出来的(如果这有影响的话)。
2 个回答
使用字符串的 split
方法:
>>> "Sico87 is an awful python developer".split(' ', 1)
['Sico87', 'is an awful python developer']
它是怎么工作的:
- 每个字符串都是一个对象。字符串对象上有一些特定的方法,比如这里提到的
split
。你可以通过obj.<方法名>(<参数>)
的方式来调用它们。 调用
split
方法时,第一个参数是用来分隔子字符串的字符。在这个例子中,就是空格' '
。第二个参数是指要进行分割的次数。在你的例子中,这个值是
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
可以使用 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)
。这个方法的工作原理类似,但返回的部分数量是可变的。它会返回一个包含一到两个部分的元组,第一个部分是分隔符之前的内容,第二个部分是剩下的字符串(如果有的话)。