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
。。。 展开
/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
。。。 展开
展开全部
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)
这样就行了吧。好象没有什么难度。如果要求在一行内完成,可能还是挺麻烦的。
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()
方法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()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给个一行搞定的:
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())))))
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询