4

有点困惑..但尝试使用通配符进行搜索/替换

如果我有类似的东西:

 <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

4 回答 4

3

像这样,用正则表达式怎么样

import re

YOURTEXT=re.sub("<b[^>]*>","<hh >t",YOURTEXT)
于 2010-01-19T00:53:11.567 回答
1

请参阅此处相当有用的 Python正则表达式手册,或者有关更实用的方法,请参阅正则表达式 HOWTO5.2 节搜索和替换

于 2010-01-19T00:04:52.563 回答
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”模块的文档,它有据可查,可能会帮助您实现更准确的文本操作/替换。

于 2010-01-19T00:48:59.860 回答
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
于 2010-01-19T00:19:51.220 回答