[英]Multiple queries for multiple input files
I have developed a code to "capture" in several input.txt files those lines with a especific query, but now I would like to find several queries.我已经开发了一个代码来在几个 input.txt 文件中“捕获”那些带有特定查询的行,但现在我想找到几个查询。 For instance "find: AA or CD or BC" in the input file.例如在输入文件中“查找:AA 或 CD 或 BC”。
I have not found any way to do so.我还没有找到任何方法。 Any suggestion would be so helpful!任何建议都会很有帮助!
Input file输入文件
AA
AB
AC
CD
CD
AA
BC
Output file Output 文件
AA
CD
CD
AA
BC
This is the code I am using now:这是我现在使用的代码:
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)
You can do like this:你可以这样做:
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: Output:
['AA', 'CD', 'CD', 'AA', 'BC']
[EDIT] Using fileinput [编辑] 使用文件输入
If you want to use fileinput module to parse multiple files and to know in each file what keys are found it you can try like this:如果你想使用 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'))
Content of data.txt data.txt的内容
AA
AB
AC
CD
CD
AA
BC
and和
Content of data1.txt data1.txt的内容
AA
AB
AC
CD
CD
AA
BC
AA
BB
DD
FF
BC
BC
Output: 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.