2015-06-14 69 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#所以我不知道这种语言的方法是什么)