Python 从制表符分隔的文本文件中选择并导出与另一个文件中的值相等的行

Python 从制表符分隔的文本文件中选择并导出与另一个文件中的值相等的行,python,excel,Python,Excel,我有一个大的以制表符分隔的TXT文件和一个excel文件。我需要从TXT中提取A列值等于excel中A列值的行。如果TXT文件不是太大,我可以用excel中的高级过滤功能来做。但是现在这个文件太大了 TXT示例: A B C D 1 2 3 胜过 假设:文本文件是一个名为“values.txt”的文件;它有一个不会使用的标题行,Excel文件是一个名为“source.xlsx”的文件,其中数据位于名为“Sheet1”的工作表中 要获取要选择的项目列表,请执行以下操作: import ope

我有一个大的以制表符分隔的TXT文件和一个excel文件。我需要从TXT中提取A列值等于excel中A列值的行。如果TXT文件不是太大,我可以用excel中的高级过滤功能来做。但是现在这个文件太大了

TXT示例:

A B C D 
1 
2
3
胜过


假设:文本文件是一个名为“values.txt”的文件;它有一个不会使用的标题行,Excel文件是一个名为“source.xlsx”的文件,其中数据位于名为“Sheet1”的工作表中

要获取要选择的项目列表,请执行以下操作:

import openpyxl, csv

wb = openpyxl.load_workbook(filename='source.xlsx')
ws = wb['Sheet1']
# this is a list generator which scans column 'A' for a continuous list
source_values = [ row[0].value for row in ws.rows ]
要从文本文件中获取要筛选的数据,请执行以下操作:

with open('values.txt', 'r') as csvfile:
    value_reader = csv.reader(csvfile, delimiter='\t')
# this command pushes past the first row and discards the headers
    next(value_reader, None)
# list comprehension which assumes values read for Excel's column A were all integers - if not, e.g. if mixed numbers and text, will need a more complex function to be used
    values_chosen = [ x for x in value_reader if int(x[0]) in source_values]
继续使用你选择的价值观,无论你需要什么。请注意,它将是一个嵌套列表,即
[[3]、[5]、[5]、[6]、[You']]

with open('values.txt', 'r') as csvfile:
    value_reader = csv.reader(csvfile, delimiter='\t')
# this command pushes past the first row and discards the headers
    next(value_reader, None)
# list comprehension which assumes values read for Excel's column A were all integers - if not, e.g. if mixed numbers and text, will need a more complex function to be used
    values_chosen = [ x for x in value_reader if int(x[0]) in source_values]