以大文本格式打印特定信息

2024-05-28 21:07:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我想读入并解析一个大的文本文件(超过900000行),但我只想在整个文件中输出一组特定的行。我有我要找的关键词和数字,但为了简化问题,我只找这些特定的词……“Lot ID”、“Wafer ID”、“Chip X Coord”和“Chip Y Coord”。你知道吗

我有一根绳子,里面有我需要的一切。我只是不知道如何与一个大的文本文件相比较。我试过if语句,但不知道下一步该怎么做。我又是个初学者了。你知道吗

my_list = ['Lot ID', 'Wafer ID', 'Chip X Coord', 'Chip Y Coord']
array = []
correct = False 

with open("HP.txt", "r") as lines:

for line in lines:
   line = line.strip('\n') 
   line = line.strip('\t')  
   line = line.strip() 
   line = line.replace(" ", "") 
   array.append(line)   

if 'Lot ID' in line:
   correct = True  

if 'Wafer ID' in line:
   correct = True

if 'Chip X Coord' in line:
   correct = True 

if 'Chip Y Coord' in line:
   correct = True 

   print(array)


f.close()

每次出现在文件中时,我都要输出这些特定单词的列表。你知道吗


Tags: 文件inidtrueiflinearraylot
1条回答
网友
1楼 · 发布于 2024-05-28 21:07:40

我假设您想将匹配行写入我创造性地命名为output的输出文件_行.txt. 你知道吗

请注意列表理解,以确定文件中的行是否包含任何关键字。你知道吗

[item for item in my_list if(item in line)]

这将遍历关键字列表中的值,并检查文本行是否包含该关键字。这样,您就可以在列表中添加/删除关键字,而无需更改代码。你知道吗

我还删除了删除空格的行,因为所有关键字都有空格。你知道吗

这将通过并只打印包含关键字的行

my_list = ['Lot ID', 'Wafer ID', 'Chip X Coord', 'Chip Y Coord']

with open("HP.txt", "r") as lines:
    with open("output_lines.txt","w+") as out_file:
        for line in lines:
            line = line.strip('\n') 
            line = line.strip('\t')  
            line = line.strip() 
            is_in_list = any(item for item in my_list if(item in line)) 

            if is_in_list:
                print(line)
                out_file.write(line)
                out_file.write('\n')

这将根据上下文提取和打印。它对输入文件做了一些强有力的假设。 -每四行包含您要查找的四个项目 -所有四个项目都将在每个区块中进行说明

我的测试输入如下所示:

Lot ID=Q19176
Wafer ID=564
Chip X Coord=84834
Chip Y Coord=64738
Lot ID=Q19176
Wafer ID=987
Chip X Coord=3565
Chip Y Coord=35635
Lot ID=Q19176
Wafer ID=2343
Chip X Coord=2344
Chip Y Coord=6565

下面的代码给出了输出:

Q19176_564_84834_64738
Q19176_987_3565_35635
Q19176_2343_2344_6565

它是用不同项目的值填充一个列表,这些值是位置相关的-意味着批次ID总是位置0,晶圆ID总是位置1。。。你知道吗

with open("HP.txt", "r") as lines:
    with open("output_lines_context.txt","w+") as out_file:
        data_list = [None for i in range(4)]
        for line in lines:
            line = line.strip('\n') 
            line = line.strip('\t')  
            line = line.strip() 
            items = line.split('=')
            if len(items) > 1:
                if 'Lot ID' in line:
                    data_list[0] = items[1]
                elif 'Wafer ID' in line:
                    data_list[1] = items[1]
                elif 'Chip X Coord' in line:
                    data_list[2] = items[1]
                elif 'Chip Y Coord' in line:
                    data_list[3] = items[1]
            has_none = any(i is None for i in data_list)
            if not has_none:
                print('_'.join(data_list))
                out_file.write('_'.join(data_list))
                out_file.write('\n')
                data_list = [None for i in range(4)]

相关问题 更多 >

    热门问题