有没有方法让python的str.partition忽略大小写?
我想让Python的str.partition函数在查找时忽略大小写,所以
>>>partition_tuple = 'Hello moon'.partition('hello')
('', 'Hello', ' moon')
并且
>>>partition_tuple = 'hello moon'.partition('hello')
('', 'hello', ' moon')
返回的结果如上所示。
我应该使用正则表达式吗?
谢谢,
编辑:
抱歉,我应该说得更具体一些。我想在一个字符串中找到一个关键词,然后对它进行修改(比如在它周围加点东西),最后再把它放回去。我打算通过分割字符串来实现这个目标,然后修改中间的部分,最后再把所有部分拼接在一起。
举个例子:
'this is a contrived example'
如果关键词是'contrived',那么它会变成:
'this is a <<contrived>> example'
而且我需要它能够执行<<>>,即使'contrived'是以大写'C'开头的。
注意,这个词中的任何字母都可以是大写的,不仅仅是第一个字母。
大小写需要被保留。
这个问题的另一个独特之处在于可能会有多个关键词。实际上,甚至可能有一个关键短语。也就是说,在上面的例子中,关键词可以是'a contrived'和'contrived',在这种情况下,输出需要看起来像:
'this is <<a contrived>> example.'
6 个回答
1
你想用partition()解决什么实际问题呢?
不,partition()是区分大小写的,除了对主要字符串进行规范化之外,没有其他办法可以解决这个问题。
1
如果你不需要保持字母的大小写,可以这样做:
>>> partition_tuple = 'Hello moon'.lower().partition('hello')
>>> partition_tuple
('', 'hello', ' moon')
>>>
不过,正如你所看到的,这样做会把结果中的元组也变成小写。你不能让分区不区分大小写。
2
怎么样
re.split('[Hh]ello', 'Hello moon')
这样会得到
['', ' moon']
现在你有了这些部分,可以随意组合在一起。而且它会保留字母的大小写。
[编辑]
你可以在一个正则表达式里放多个关键词(但下面有警告要注意)
re.split(r'[Hh]ello | moon', 'Hello moon')
警告:re会使用第一个匹配的关键词,然后忽略其他的。
所以,放多个关键词只有在每个目标中只有一个关键词时才有用。