我有一个 file1 有这样的范围
10 20
50 60
70 100
150 170
……
……
文件2
15
55
80
160
……
……
我想读取 file1 中的范围并查看 file2 并获取它们之间的值
最终输出:
15 是 10 到 20 之间的值
55 是 50 到 60 之间的值
……
……
如果您想对结果做一些事情而不是将它们打印出来,您可以创建一个字典,将范围(来自 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
在 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))
当然,您还需要一些错误处理,并且您必须将整个事情放在一起,但这应该足以自己完成。
这应该可以解决问题:
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])