【问题标题】:Looping though a text file and an Excel file循环遍历文本文件和 Excel 文件
【发布时间】:2015-11-03 14:06:00
【问题描述】:

我想查看文件中的一行是否包含(不等于)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

结果应该都是“真”,但它只给我第一个“真”。

【问题讨论】:

  • 你需要一个条件来打破你的循环,否则你总是在第一行退出 - 第一个 vh_element。你的循环什么时候应该停止?
  • 我想比较所有内容,找到匹配项时从循环的开头中断并开始,然后继续搜索下一个匹配项。
  • for line in f: line = line.rstrip() for vh in data["H_Sequence_File"]: vh = vh.rstrip() if (line in vh): print(line) break
  • 好的,所以你不需要break,而是需要continuebreak 只是退出所有 for 循环,而不是 continue 转到第一个循环的下一个元素并重新启动第二个 for。我会发布解决方案

标签: python excel file loops break


【解决方案1】:

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

【讨论】:

  • 首先,我会删除“中断”并检查程序是否打印所有匹配项,甚至是重复匹配项。然后,如果您需要优化它,我会在中断之前添加一个条件,例如 if (match),以便仅在找到匹配项时才中断。即使找不到匹配项,您的代码也会中断。
【解决方案2】:
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

【讨论】:

  • 其他一切都是我修复代码后得到的,除了我使用'break'而不是'continue',它似乎工作。 “继续”和“中断”是不同的,我应该在这里使用哪一个?谢谢
  • 我测试了两个,它们给了我相同的输出,这是怎么回事??
  • 在这种情况下看起来“继续”是多余的,我看不出匹配是在哪里定义的
  • match 是一个简单的 True。 continue 允许停止第二个循环的迭代并继续第一个循环。 break 停止一切并退出两个 for 循环
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-11
  • 2014-04-10
  • 1970-01-01
  • 1970-01-01
  • 2012-04-25
  • 1970-01-01
  • 2016-01-22
相关资源
最近更新 更多