2009-12-03 111 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