【发布时间】:2016-04-27 16:21:50
【问题描述】:
我有一个元组列表,每个元组都包含一个要替换的单词,它来自给定文本文件的行号和列号位置。我想浏览文本文件并用字符替换该特定位置的特定单词(例如[('word1', 1, 1), ('word2', 1, 9), ... ])。
换句话说,给定一个特定的单词,它在文本文件中的行号和列号我试图找到并用一个字符替换该单词,例如:
鉴于文本文件包含以下内容(假设它的位置与显示的一样 - 未写入 - 此处)
现在他很兴奋,自然而然地看到了你更分钟的通道。按堆栈 成为法庭的希望。更远的是朋友们要减损。禁止关注 做私人。得罪住处,但男人全神贯注害羞。假装我 堆栈 认真到达公司等等。费利西蒂知道但必须是 严格承认你是如何堆叠的。
假设要替换的单词是stack,在文本中的位置是3 和列16,用字符* 替换它,
因此,在替换发生后,文本文件现在将包含以下内容:
现在他很兴奋,自然而然地看到了你更分钟的通道。按堆栈 成为法庭的希望。更远的是朋友们要减损。禁止关注 做私人。得罪住处,但男人全神贯注害羞。假装我 * 认真到公司等等。费利西蒂知道但必须是 严格承认你是如何堆叠的。
我考虑过linecache,但对于大型文本文件来说似乎效率很低。另外,鉴于我已经有了行号和列号,我希望有一种方法可以直接转到该位置并执行替换。
有谁知道在 Python 中执行此操作的方法?
编辑
使用 numpy 的genfromtxt 提出的初始解决方案(很可能)不适合在后续issue 的讨论之后,因为需要文本文件的每一行都存在而不是跳过(例如空行、以 'w' 开头的字符串和 '/*.. /' 内的字符串)。
【问题讨论】:
-
看看这个answer 它可以帮助您阅读特定的行,但您必须遍历整个文件。
标签: python python-3.x