-2

我有一个 file1 有这样的范围

10 20

50 60

70 100

150 170

……

……

文件2

15

55

80

160

……

……

我想读取 file1 中的范围并查看 file2 并获取它们之间的值

最终输出:

15 是 10 到 20 之间的值

55 是 50 到 60 之间的值

……

……

4

3 回答 3

1

如果您想对结果做一些事情而不是将它们打印出来,您可以创建一个字典,将范围(来自 file1)映射到这些范围内的数字(来自 file2。)

ranges = []
with open('file1') as f:
    for line in f:
        ranges.append(line.strip().split(' '))
ranges = [tuple(int(_) for _ in r) for r in ranges]
in_range = {range_: set() for range_ in ranges}
with open('file2') as f:
    for line in f:
        num = int(line.strip())
        for range_ in ranges:
            if range_[0] < num < range_[1] # Between low and high
                in_range.add(num)
# print in_range
于 2013-08-12T22:53:32.173 回答
0

在 Python 中,以下是如何...</p>

打开一个文件:

with open('thefile.txt') as f:

迭代文件的行:

for line in f:

在行尾丢弃多余的空格:

line = line.rstrip()

在第一个空白块周围将每一行分成两部分:

left, right = line.split(None, 1)

将字符串转换为数字:

low = int(low)

获取其他两个数字中间的数字:

mid = (low + high) // 2

或者,要检查一个数字是否介于其他两个数字之间:

if low <= mid <= high:

打印格式化结果:

print('{} is the value between {} and {}'.format(mid, low, high))

当然,您还需要一些错误处理,并且您必须将整个事情放在一起,但这应该足以自己完成。

于 2013-08-12T22:45:15.510 回答
-1

这应该可以解决问题:

with open('file1.txt') as file1, open('file2.txt') as file2:
    ranges = [line.split(' ') for line in file1 if line.rstrip()]
    values = filter(lambda line: bool(line.rstrip()), file2.readlines())
for value, _range in zip(values, ranges):
    print("{} is {}the value between {} and {}".format(value, "not " if int(_range[0]) <= float(value) <= float(_range[1]) else "", _range[0], _range[1])
于 2013-08-12T22:44:57.210 回答