2009-12-03 64 views
6

我已阅读文档,但不完全了解如何执行此操作。如何在Python中分割字符串?

我知道我需要在字符串中有某种标识符,以便函数可以找到拆分字符串的位置(除非我可以定位到句子中的第一个空格吗?)。

因此,例如,我将如何拆分: "Sico87 is an awful python developer""Sico87""is an awful Python developer"

字符串从数据库中检索(如果这很重要)。

+1

您的添加不合适。请问一个新问题。 – SilentGhost 2009-12-03 11:35:30

+1

这不合适吗?这是问同样的问题,但代码示例?谈论迂腐! – Udders 2009-12-03 11:54:15

+2

这不是书信。StackOverflow非常有用,因为单独的问题是分开的,所以这个精确问题的好答案会浮到顶端。在您使用的任何模板系统中使用Python与如何分割字符串非常正交。 – 2009-12-03 16:37:33

回答

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)其中工程similiarly但返回可变数量的项目。它将返回一个或两个元素的元组,第一个元素是第一个字直到分隔符,第二个元素是字符串的其余部分(如果有的话)。

+2

错误地使用了'maxsplit'参数 – abyx 2009-12-03 09:21:46

+1

thx abyx,当您添加您的评论时看到并修复了它:) – Will 2009-12-03 11:09:44

+1

我不知道如果我说与maxsplit分离更棘手,它只会使tuple解包无效。尽管如此,我很同意使用分区+元组解包来解决这种情况。它简洁而一致。 – 2009-12-03 16:33:14

19

使用的字符串split方法:

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

工作原理:

  1. 每个字符串是一个对象。字符串对象具有在其上定义的某些方法,例如split。你用obj.<methodname>(<arguments>)给他们打电话。
  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 
+0

感谢很好的方式来解释分割功能 – user765443 2013-04-09 13:19:48