【问题标题】:Check if item is in range of a list of tuples检查项目是否在元组列表的范围内
【发布时间】:2019-11-22 13:02:47
【问题描述】:

我有一个文件,其中只需要修改特定的“块”行,在这种情况下,我想检索 a 和 b 之间的行,包括这些行:

1 
2 a
3 
4 b
5
6
7 a
8
9
10 b

现在我有一个元组列表,它指示我需要在哪些行索引之间修改内容: [(2, 4), (7, 10)].

现在我需要替换那些行的内容,比如

with open("file.txt") as file1:
    for index, line in enumerate(log, start=1):
        if index in range(**OF ONE OF THE TUPLES IN THE LIST**):
            line = ....

如果没有嵌套循环和重复内容/多次打开文件,我不明白如何实现这一点。

想法?

【问题讨论】:

  • 你想用什么替换行范围?
  • 问题是a和b之间的行有错误的信息,所以我会用正确的版本替换'错误'字符串。
  • 当然,但是您从哪里获得“正确”版本?你是根据一些功能来换行吗?
  • @Geogry 不是重复的,这个问题是关于元组的方法。您链接的答案是 1. 单个整数和 2. 不是范围检查。加分,我来自谷歌搜索结果,在下面的答案中找到了这种更好的方法。

标签: python python-3.x list tuples


【解决方案1】:

这是一个可能的解决方案:

ranges = [(2, 4), (7, 10)]
for line_index in range(number_of_lines):
    if any(line_index in range(start, end + 1) for start, end in ranges):
        # TODO
        # Replace line with something

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2017-07-13
    相关资源
    最近更新 更多