Python在“#”之间的字符串中查找单词

时间:2014-06-02 08:05:28

标签: python

我想在两个#标记之间搜索和替换单词。

文字是随机的(用户添加)。

example = 'hello this #word1# a it #word2# thanks!'

text = "hello this #word1# a it #word2# thanks!"

我需要在#(word1和word2)之间剪切两个单词,并用大写字母替换第一个字母 - .title()

我有一个代码:

import re

text = 'hello this #word1# a it #word2# thanks!'
print re.sub('#(\w+)#', lambda m:m.group(1).title(), text)

输出:hello this Word1 a it Word2 thanks!

如何做到输出:hello this #Word1# a it #Word2# thanks!

5 个答案:

答案 0 :(得分:3)

你的意思是这样吗?

>>> print re.sub('(#\w+#)', lambda m:m.group(1).title(), text)
hello this #Word1# a it #Word2# thanks!

答案 1 :(得分:3)

您可以使用lookahead and lookbehind断言:

>>> re.sub('(?<=#)(\w+)(?=#)', lambda m:m.group(1).title(), text)
hello this #Word1# a it #Word2# thanks!

答案 2 :(得分:2)

#添加到该功能。

import re

text = 'hello this #word1# a it #word2# thanks!'
print re.sub('#(\w+)#', lambda m: "#" + m.group(1).title() + "#", text)

答案 3 :(得分:2)

使用组(0)代替组(1)

import re

text = 'hello this #word1# a it #word2# thanks!'
print re.sub('#(\w+)#', lambda m:m.group(0).title(), text)

答案 4 :(得分:-1)

只需扩展群组,因此,它包含'#'字符:

print re.sub('(#\w+#)', lambda m:m.group(1).title(), text)