2012-05-16 221 views
-1

早安,查找和蟒蛇代替

我是个在python初学者,我想有一点帮助:

我就会给你个例:

我在文件中得到了:

blabla add_signed_123_548 blabla 
blabla add_unsigned_77_10 blabla 

,我想:

blabla adder blabla 
blabla adder blabla 

我必须找到它们,然后我必须用加法器替换它们。 我没有得到关于我随机给出的数字的信息。 但我不知道如何挑选整个字符串?

我想查找'add_',那么我想替换adder_signed_123_548是否可行?

我希望它很清楚。 THX的帮助:)

+2

呜呜,我不清楚,至少:S – jlengrand

+0

您是否在寻找某种正则表达式? – jlengrand

回答

7

这将替换与add_adder开始的所有单词:

>>> import re 
>>> s = """foo bar add_signed_123_548 foo bar 
... Baddest add_unsigned_77_10 additional""" 
>>> print(re.sub(r"\badd_\w+", "adder", s)) 
foo bar adder foo bar 
Baddest adder additional 

\b字边界锚可以确保add_在一个单词的开始只有匹配。

+0

实际上,有很多随机数,毕竟add_signed,我无法检查我的所有文件, – user1398179

+0

@ user1398179:是的,正则表达式'\ w +'匹配任意数量的字母数字字符。输出是你想要的方式吗? –

+0

啊oki我不知道:o 是的,谢谢蒂姆:) – user1398179

0

你可以把你输入的字符串,并把它分解像'add_signed_123_548'.split('_')下划线,这将给你所有的组成部件['add', 'signed', '123', '548']的列表,并从那里你可以处理但它需要。

1

没有正则表达式的答案:

>>> value = "blabla add_signed_123_548 blabla" 
>>> print ' '.join((word, 'adder')[word.startswith('add_')] for word in value.split()) 
blabla adder blabla