在csv文件中搜索Python列表中的元素

在csv文件中搜索Python列表中的元素,python,Python,我需要一些关于我用Python编写的脚本的帮助,但它不起作用 所以我有一个带有一些标识符(数字)的文件,我把它转换成一个列表。到目前为止还不错 然后我想检查一个.csv文件,如果该行的第一个元素在上一个列表中,则将该行写入一个新的.csv文件 我的脚本如下所示: tratamento = open('therapies.csv') tratados_B = open('tratados_SubB.csv') Outfile = open('subtype_B_Tratamento.csv', '

我需要一些关于我用Python编写的脚本的帮助,但它不起作用

所以我有一个带有一些标识符(数字)的文件,我把它转换成一个列表。到目前为止还不错

然后我想检查一个.csv文件,如果该行的第一个元素在上一个列表中,则将该行写入一个新的.csv文件

我的脚本如下所示:

tratamento = open('therapies.csv')
tratados_B = open('tratados_SubB.csv')
Outfile = open('subtype_B_Tratamento.csv', 'w')

treated_list = []


for line in tratados_B:
    TL = line.strip()
    treated_list.append(TL) 

for line in tratamento:
    TLB = line.strip().split(';')[0]
    if TLB in treated_list:
        Outfile.write(line)
    else: 
        pass
知道我做错了什么吗


提前谢谢你

尝试在脚本末尾添加
Outfile.close()

更好的方法是将
关键字一起使用

treated_list = []

with open('subtype_B_Tratamento.csv', 'w') as Outfile,
     open('therapies.csv') as tratamento,
     open('tratados_SubB.csv') as tratados_B:

    for line in tratados_B:
        TL = line.strip()
        treated_list.append(TL) 

    for line in tratamento:
        TLB = line.strip().split(';')[0]
        if TLB in treated_list:
            Outfile.write(line)

With
为您处理文件关闭。

请解释“它不工作”。此外,文件对象在访问后也会显式关闭。您的源代码中是否有
Outfile.close()
Outfile.flush()
?基本上,我认为它只读取第一行,因为第一行不在列表中,所以它不会执行任何其他操作。输出文件为空。我添加了Outfile.close(),它没有改变任何东西。@MEusebio循环中没有
break
语句,因此它将在所有行中循环,但是
else:pass
东西是不必要的。尝试在循环内部打印
repr(TLB)
。您可以添加示例输入文件吗?试着把它们减到最小,看看你是否能重现错误。如果可以,请用这些更新您的答案。