python将指定文本中的字符串替换后,保存该文本文件。 5

txt内容,如:/test/A/a.txt/test/A/b.txt/test/A/c.txt/test/A/d.txt/test/B/a.txt/test/B/b.tx... txt内容,如:
/test/A/a.txt
/test/A/b.txt
/test/A/c.txt
/test/A/d.txt
/test/B/a.txt
/test/B/b.txt
/test/B/c.txt
/test/B/d.txt
/test/X/ABC
/test/temp.txt
。。。
需求:
1.把/test全部删除
2.找到/X/ABC,然后在后面加上一行/X/XYZ
3.找到/temp.txt以及空行,删除这几行
结果:
/A/a.txt
/A/b.txt
/A/c.txt
/A/d.txt
/B/a.txt
/B/b.txt
/B/c.txt
/B/d.txt
/X/ABC
/X/XYZ
。。。
展开
 我来答
bdwisyou7d
2013-05-06 · TA获得超过1.3万个赞
知道大有可为答主
回答量:3774
采纳率:81%
帮助的人:1075万
展开全部
txt=open("inputfile.txt","rb").readlines()
outputs=[]
for line in txt:
line=line.replace("/test","")
if line=="/X/ABC":
outputs.append(line)
outputs.append("/X/XYZ")
elif line=="/temp.txt":continue
else:outputs.append(line)
这样就行了吧。好象没有什么难度。如果要求在一行内完成,可能还是挺麻烦的。
追问
这个代码运行之后不会把原来的inputfile.txt直接改掉的。而且也不会生成新的文件。
如果要生成新的文件的话该怎么改?
而且换行符要用Linux的LF,不是Windows的CR+LF
追答
newfilename="xxxx"
open(newfilename,"wb").write("\n".join(outputs))
这样就可以了。
匿名用户
推荐于2016-06-27
展开全部
二种方法可以实现,
方法1、
sed '#^/test#s###;#/X/ABC#a \ /X/XYZ;#temp.txt#d;^$d' urfile

方法2、
fhl=open('test.txt','r')
for line in fhl.readlines():
line=line[5:].strip()
if line!=0 and line[-9:]!='/temp.txt':
if line[-6:]=='/X/ABC':
print line
print '/X/XYZ'
else:
print line
fhl.close()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
徽积分
2013-05-08 · TA获得超过105个赞
知道答主
回答量:42
采纳率:0%
帮助的人:38.9万
展开全部

给个一行搞定的:

with open('inputfile.txt', 'r') as f, open('outputfile.txt', 'wb') as g:
    g.write('\n'.join(
        filter(lambda s: s!='/temp.txt' and len(s),
               map(lambda s:
                       s.replace('/test', '')+('','\n/X/XYZ')[s=='/test/X/ABC'],
                   map(str.strip, f.readlines())))))
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式