我正在尝试编写一个可以读取目录中多个 .xml 文件的脚本 当找到特定的字符串时(每个文件都有这个脚本),我需要它删除该字符串之后的所有内容并将其全部替换为新内容(如果更容易的话,可以从另一个文件中提取)。
这里有很多行被删除/写入。
目前,我正在手动浏览文件并删除字符串后的所有文本,然后保存文件并运行此 python 脚本:
import fileinput
import sys
import os
os.chdir("F:\Desktop\PyTest")
rootdir='F:\Desktop\PyTest'
for subdir, dirs, files in os.walk(rootdir):
for file in files:
f=open(file, 'r')
lines=f.readlines()
f.close()
f=open(file, 'a')
f.write("\n <Text>Lorem Ipsum</Text>")
f.write("\n <Text>Lorem Ipsum</Text>")
f.write("\n <Text>Lorem Ipsum</Text>")
f.write("\n <Text>Lorem Ipsum</Text>")
f.close
我花了一段时间才从教程中将其拼凑在一起,尽管我已经设法找到教程来搜索特定字符串并替换它,但我无法删除字符串后的所有内容并替换与新的。
任何建议将不胜感激:)
不必使用 Python,但我正在运行 Windows 环境。
最佳答案
这显然不是大文件最快的实现,但应该可行。
for subdir, dirs, files in os.walk(rootdir):
for file in files:
output=[]
with open(file, 'r') as inF:
for line in inF:
output.append(line)
if 'criteria' in line: break
f=open(file, 'a')
Lorem_list=['Lorem Ipsum','Lorem Ipsum','Lorem Ipsum']
#The '\n' may look strange, but I am using your previous syntax.
#This also will result in a blank line. I would suggest revising the
#way you place text to follow the (x+'\n') format.
[f.write(x) for x in output]
[f.write('\n '+x) for x in Lorem_list]
f.close()
将“criteria”替换为您要查找的字符串。
需要明确的是:
Lorem_list=['Lorem Ipsum','Lorem Ipsum','Lorem Ipsum']
[f.write('\n '+x) for x in Lorem_list]
意思是:
f.write("\n Lorem Ipsum")
f.write("\n Lorem Ipsum")
f.write("\n Lorem Ipsum")
关于python - 从文本文件中删除特定字符串后的多行,然后替换为新文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14166132/