2015-06-14 41 views
3

如果我想利用一個字(不區分大小寫)

"hi, my name is foo bar" 

,分裂它"foo",並有分裂的,不區分大小寫(分割任何的"foO""FOO""Foo"等)分割,我該怎麼辦?請記住,雖然我希望分割不區分大小寫,但我也希望保持字符串其餘部分的區分大小寫。

所以,如果我有:

test = "hi, my name is foo bar" 

print test.split('foo') 

print test.upper().split("FOO") 

我會分別得到

['hi, my name is ', ' bar'] 
['HI, MY NAME IS ', ' BAR'] 

但我想

['hi, my name is ', ' bar'] 
每次

。目標是保持原始字符串的區分大小寫,除了我正在分裂的東西。

所以,如果我的測試字符串是:

"hI MY NAME iS FoO bar" 

我期望的結果將是:

['hI MY NAME iS ', ' bar'] 
+0

我不明白這種分裂的應用。真實情況下FOO會是什麼?你是在提取一個人的名字還是其他的東西? – Aditya

+0

一個可能的示例:SQL腳本可以使用分隔符分隔批次(在SQL管理器中默認爲「去」)。 SQL引擎本身不能理解此分隔符,只能由shell理解。所以當你從一個python模塊運行這樣一個腳本時,你需要將文件拆分爲「go」來分別運行不同的批處理(不區分大小寫)。 – sanderd17

回答

9

您可以使用re.split functionre.IGNORECASE flag(或re.I的簡稱):

>>> import re 
>>> test = "hI MY NAME iS FoO bar" 
>>> re.split("foo", test, flags=re.IGNORECASE) 
['hI MY NAME iS ', ' bar'] 
>>> 
+0

感謝您使用re和給予這樣一個美麗的soln :) @iCodez – stackMonk

-1

你也可以搜索一些東西,並獲得startposi關鍵字的重刑。我會建議,並用「substring」方法將其剪下。 (我來自C#所以我不知道這種語言的方法是什麼)