繁体   English   中英

多个输入文件的多个查询

[英]Multiple queries for multiple input files

我已经开发了一个代码来在几个 input.txt 文件中“捕获”那些带有特定查询的行,但现在我想找到几个查询。 例如在输入文件中“查找:AA 或 CD 或 BC”。

我还没有找到任何方法。 任何建议都会很有帮助!

输入文件

AA
AB
AC
CD
CD
AA
BC

Output 文件

AA
CD
CD
AA
BC

这是我现在使用的代码:

import fileinput
from collections import deque
output_file = 'output.txt' 
buscado = 'AA'

contexto = deque([], 4)  # for keeping the last 4 lines


with open(output_file, "w") as f_out:
    for line in fileinput.input(files=["input.txt", "input2.txt"]):
        contexto.append(line)       
        if len(contexto) < 4:      
            continue
        if buscado in contexto[1]:  
            f_out.writelines(contexto) 

你可以这样做:

output_list = []
with open('data.txt', 'rt') as f:
    data = f.readlines()
for line in data:
    if line.strip('\n') in ("AA", "CD", "BC"):
        output_list.append(line.strip('\n'))
print(output_list)

Output:

['AA', 'CD', 'CD', 'AA', 'BC']

[编辑] 使用文件输入

如果你想使用 fileinput 模块来解析多个文件并知道在每个文件中找到了哪些键,你可以这样尝试:

import fileinput
 
with fileinput.FileInput(files=('data.txt', 'data1.txt'), mode='r') as input:
    for idx, line in enumerate(input):
        if input.isfirstline() == True:
            # Indicate the file name
            print(f'Reading file : {input.filename()}')
        if line.strip('\n') in ("AA", "CD", "BC"):
            print(line.strip('\n'))

data.txt的内容

AA
AB
AC
CD
CD
AA
BC

data1.txt的内容

AA
AB
AC
CD
CD
AA
BC
AA
BB
DD
FF
BC
BC

Output:

Reading file : data.txt
AA
CD
CD
AA
BC
Reading file : data1.txt
AA
CD
CD
AA
BC
AA
BC
BC

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM