2015-11-03 87 views
0

我想查看文件中的某行是否包含(不等于)来自Excel文件的列。通过文本文件和Excel文件循环访问

data = pd.read_excel('C:/Users.../excel.xlsx', sep='\t') 
f=open("list.txt", "r+") 
for line in f: 
    line = line.rstrip() 
    for vh in data["Column_of_interest"]: 
     vh = vh.rstrip() 
     match = line in vh 
     print (match) 
     break 

结果应该是所有“真”,但它只是给了我“真”的第一个。

+0

你需要一个条件来打破你的循环,否则你总是退出第一行 - 第一个vh_element。当你的循环应该停止? – fattidare

+0

我想比较一切,找到匹配时从循环的开始处中断并开始,并继续搜索下一场比赛。 – Jessica

+0

我想我明白了! – Jessica

回答

1

即使您找不到匹配项,您也会破坏...您发布的代码将文本文件中的所有行与Excel文件的第一行进行比较,因为它始终在第一行执行“break”内部for的第一次迭代结束。

+0

是的我应该如何解决这个问题? – Jessica

+0

首先,我会删除“中断”并检查程序是否打印所有匹配项,甚至重复匹配项。然后,如果您需要优化它,我会在中断前添加if(match)等条件,以便仅在发现匹配时才打破。即使找不到匹配项,您的代码也会中断。 – user3804769

+0

谢谢我修好了! – Jessica

0
data = pd.read_excel('C:/Users.../excel.xlsx', sep='\t') 
f=open("list.txt", "r+") 
for line in f: 
    line = line.rstrip() 
    for vh in data["Column_of_interest"]: 
     vh = vh.rstrip() 
     if line in vh: 
      print True 
      continue 
+0

一切都是我在修复代码之后得到的,除了我用'break'而不是'continue'之外,它似乎工作正常。 '继续'和'休息'是不同的,我应该在这里使用哪一个?谢谢 – Jessica

+0

我测试了两个,他们给了我相同的输出,它怎么样? – Jessica

+0

看起来像'继续'在这种情况下是多余的,我不明白在哪里匹配定义 – AudreyM