如果我有类似的东西:
<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)
但是我错过了一些东西......
想法......谢谢答案 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”模块的文档,它有详细记录,可能有助于您实现更准确的文本操作/替换。