一个字(不区分大小写)
问题描述:
如果我想利用一个字(不区分大小写)
"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']
答
您可以使用re.split
function与re.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
答
你也可以搜索一些东西,并获得startposi关键字的重刑。我会建议,并用“substring”方法将其剪下。 (我来自C#所以我不知道这种语言的方法是什么)
我不明白这种分裂的应用。真实情况下FOO会是什么?你是在提取一个人的名字还是其他的东西? – Aditya
一个可能的示例:SQL脚本可以使用分隔符分隔批次(在SQL管理器中默认为“去”)。 SQL引擎本身不能理解此分隔符,只能由shell理解。所以当你从一个python模块运行这样一个脚本时,你需要将文件拆分为“go”来分别运行不同的批处理(不区分大小写)。 – sanderd17