python搜索替换使用通配符

时间:2010-01-19 00:00:23

标签: python regex search replace wildcard

有些困惑但是尝试使用通配符进行搜索/重新调整

如果我有类似的东西:

 <blah.... ssf  ff>
 <bl.... ssf     dfggg   ff>
 <b.... ssf      ghhjj fhf>

并且我想用say,

替换所有上述字符串
 <hh  >t

关于如何实现这一点的任何想法/评论?

感谢

更新(感谢评论!)

我错过了什么......

我的初始示例文本是:

Soo Choi</span>LONGEDITBOX">Apryl Berney 
Soo Choi</span>LONGEDITBOX">Joel Franks 
Joel Franks</span>GEDITBOX">Alexander Yamato 

我正试着

Soo Choi foo Apryl Berney 
Soo Choi foo Joel Franks 
Joel Franks foo Alexander Yamato 

我尝试过推导

name=re.sub("</s[^>]*\">"," foo ",name) 

但是我错过了一些东西......

想法......谢谢

4 个答案:

答案 0 :(得分:3)

这样,使用正则表达式

import re

YOURTEXT=re.sub("<b[^>]*>","<hh >t",YOURTEXT)

答案 1 :(得分:2)

请参阅相当有用的Python Regular Expression手册here,或者了解更多动手方法Regular Expression HOWTO部分 5.2搜索和替换

答案 2 :(得分:0)

不必使用正则表达式

for line in open("file"):
    if "<" in line and ">" in line:
        s=line.rstrip().split(">")
        for n,i in enumerate(s):
            if "<" in i:
                ind=i.find("<")
                s[n]=i[:ind] +"<hh "
        print '>t'.join(s)

输出

$ cat file
blah  <blah.... ssf  ff> blah
blah <bl.... ssf     dfggg   ff>  blah <bl.... ssf     dfggg   ff>
blah <b.... ssf      ghhjj fhf>

$ ./python.py
blah  <hh >t blah
blah <hh >t  blah <hh >t
blah <hh >t

答案 3 :(得分:0)

听起来像“re”模块的工作,这里有一个小样本函数,虽然你可以只使用一个re.sub()行。

使用“re”模块,一个简单的re.sub可以解决这个问题:

import re

def subit(msg):
    # Use the below if the string is multiline
    # subbed = re.compile("(<.*?>)" re.DOTALL).sub("(<hh  >t", msg)
    subbed = re.sub("(<.*?>)", "<hh  >t", msg)
    return subbed

# Your messages bundled into a list
msgs = ["blah  <blah.... ssf  ff> blah",
        "blah <bl.... ssf     dfggg   ff>  blah <bl.... ssf     dfggg   ff>",
        "blah <b.... ssf      ghhjj fhf>"]

# Iterate the messages and print the substitution results
for msg in msgs:
    print subit(msg)

我建议您查看“re”模块的文档,它有详细记录,可能有助于您实现更准确的文本操作/替换。