python - 从文本文件中删除特定字符串后的多行,然后替换为新文本

标签 python

我正在尝试编写一个可以读取目录中多个 .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/

相关文章:

python - 将 mat 文件转换为 pandas 数据帧

python - 从 django rest 框架中使用 api

Python - 减少功能和|运算符(operator)

python - VS Code 在我的 Python 脚本中随机导入库

python - 想要了解 matplotlib 极坐标/径向图

python - 如何将 Keras 模型保存为卡住图?

Python np.asarray 不返回真实形状

python - 如何让爬虫在 cron 作业上运行?

python - 从 Python 日志记录 YAML 配置文件中评估语句

python - 如何删除python中只包含数字的单词?