为什么不尝试这样的事情(假设如果任何单词与第二个文件中的单词匹配,您希望打印整行。基本上,您将第二行设为字符串,然后检查第一个文件中的任何单词是否在那个字符串。如果是,写出来。
with open("list.csv", "U") as file1, open("example.csv", "rb") as file2, open("output.csv", "wb+") as file3:
reader1 = csv.reader(file1)
reader2 = csv.reader(file2)
writer = csv.writer(file3)
reader1_rows = [row for row in reader1]
reader2_rows = [row for row in reader2]
for num, row in enumerate(reader1_rows):
if ([word for word in row if word in ' '.join(reader2_rows[num])]):
writer.writerow([row, reader2_rows[num]])
根据您调整后的评论,我相信这应该会为您提供所需的输出:
with open("list.csv", "U") as file1, open("example.csv", "rb") as file2, open("output.csv", "wb+") as file3:
reader1 = csv.reader(file1)
reader2 = csv.reader(file2)
writer = csv.writer(file3)
reader1_rows = [row for row in reader1]
reader2_rows = [row for row in reader2]
for num, row in enumerate(reader1_rows):
for word in reader2_rows[num]:
for item in row:
if item in word:
writer.writerow([item, word])
更“pythonic”的方式可能如下:
with open("list.csv", "U") as file1, open("example.csv", "rb") as file2, open("output.csv", "wb+") as file3:
reader1 = csv.reader(file1)
reader2 = csv.reader(file2)
writer = csv.writer(file3)
reader1_rows = [row for row in reader1]
reader2_rows = [row for row in reader2]
for rowA, rowB in zip(reader1_rows, reader2_rows):
for word in rowA:
for item in (item for item in rowB if word in item):
writer.writerow([word, item])
如果您想对齐列中的所有数据(为此,您可能应该这样做)并且数据如下所示:
leg
knee
thigh
shin
ankle
hip
foot
toe
calf
feet
patella
tibia
fibula
..和..
Student broke leg yesterday
Student broke arm today
Student hurt thigh today
Student twisted elbow
Student rolled ankle today
..那么你可以这样做:
with open("example.csv") as file1, open("list.csv") as file2, open("output.csv", "wb+") as file3:
writer = csv.writer(file3)
key_words = [word.strip() for word in file2.readlines()]
for row in file1:
row = row.strip()
for key in (key for key in key_words if key in row):
writer.writerow([key, row])