我想读入并解析大型文本文件(超过900,000行),但是我只想在整个文件中输出一组特定的行。我有正在寻找的关键字和数字,但是为了简化问题,我只在寻找这些特定的单词。.“批次ID”,“晶片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()
我希望每次在文件中显示这些特定单词时输出一个列表。
答案 0 :(得分:1)
我假设您想将匹配的行写到我创造性地命名为output_lines.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)]