【问题标题】:How to replace multiple strings in multiple text files?如何替换多个文本文件中的多个字符串?
【发布时间】:2017-08-01 22:25:06
【问题描述】:

所以!我是 Python 的新手,我有大量文件需要用其他行替换某些行。

我知道这可能有点令人困惑,但让我解释一下。

所以我有一个充满文件的目录,让我们临时/。

我需要遍历该目录中的所有文件,使用 Python 并修改每个文件,替换某些行。

为此,我想要一个名为 newStrings.txt

的文件
ReplaceWithThis
iLikeReplacingStuff

我希望这些字符串替换 oldStrings.txt

中的行
I hate this string
Please get rid of me

【问题讨论】:

  • 有点不清楚你在问什么。是否要替换多个文件中的某些关键字?您想检测多个文件中的某些模式,然后替换它们吗?你想如何找到这些文件?文件名应该符合某种模式吗?目前这一切都非常“悬而未决”。
  • 不,例如,我正在搜索“HelloWord”,我想用“ByeWorld”替换它但是我有 152 个我想一起重命名的文本,因为我懒得去逐一浏览所有文件
  • 如果对你想要的东西有这么多的困惑,也许花时间阅读一下如何在 Stack 上提出一个好问题,你会得到更多相关的答案。 stackoverflow.com/help/how-to-ask
  • 术语 rename 暗示文件(名称)。 replace 一词可用于任何文本。我建议您更改主题标题(并删除当时不必要的解释)。请注意,这里在 cmets 中发布的所有疑问都是由使用这个词引起的......
  • 另外,应该添加自己的尝试;否则这只不过是要求代码,这是题外话......

标签: python rename


【解决方案1】:

已根据发布者的要求定制了代码。

import os

folderLocation = "temp/"

lookup = dict()

with open("newString.txt","r") as values:
    with open("oldString.txt","r") as keys:
        keyLines = keys.readlines()
        valueLines = values.readlines()
        for i, line in enumerate(keyLines):
            lookup[line] = valueLines[i]


for subdir, dirs, files in os.walk(folderLocation):
    for fileIn in files:
        os.rename(folderLocation + fileIn, folderLocation + "old_" + fileIn)
        with open (folderLocation + "old_" + fileIn, "r") as fi:
            with open(folderLocation + fileIn, "w") as fo:
                for line in fi:
                    if line in lookup:
                        fo.write(lookup[line])
                    else:
                        fo.write(line)

【讨论】:

  • 您可以以更好的方式存储文件名。元组列表怎么样?每个列表条目都包含一个“旧”和“新”名称,它们捆绑在一个元组中。这样就不必多次拆分字符串了。
  • 好吧,OldFineName1.txt 不是我的文件名我想重命名文件名中的文本,例如我有一个名为 HelloWorld.txt 的文件,在 HelloWorld 里面有一个词说“欢迎来到世界” .txt 我不想把“欢迎来到世界”改成别的东西。我有大约 152 多个 .txt 文件,你知道有什么好的解决方案吗?
  • 是否有任何命名约定,比如一个是 temp.old.txt 而另一个是 temp.new.txt ?您可以将那里的字符串更改为您想要的任何内容,因此您可以输入 """example.txt|new_example.txt"""。
  • 如果您不关心新文件的名称,我可以简单地将 new_ 添加到文件名的前面,但我假设您正在寻找文件名的特定更改。
  • 所以您不想更改(重命名)文件名?并想替换文件中的文本?那么OldFileName1.txt|NewFileName1.txt是什么?不是文件名吗?
猜你喜欢
  • 2019-01-07
  • 1970-01-01
  • 2014-10-13
  • 2021-10-21
  • 2014-09-29
  • 2021-05-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多