Python-仅从嵌套循环打印一次

Python-仅从嵌套循环打印一次,python,excel,nested-loops,xlwt,Python,Excel,Nested Loops,Xlwt,我有一个excel文件,如下所示: col1 col2 col3 col4 ----------------------------- row1 | 2,3,1 _ 1 w row2 | 3,2,7 _ 2 x row3 | _ _ 3 y row4 | 4,9 _ 4 z col1 col2

我有一个excel文件,如下所示:

      col1     col2    col3    col4
      -----------------------------
row1 | 2,3,1    _        1      w
row2 | 3,2,7    _        2      x
row3 |   _      _        3      y
row4 |  4,9     _        4      z
      col1     col2    col3    col4
      -----------------------------
row1 | 2,3,1  x,y,w      1      w
row2 | 3,2,7   y,x       2      x
row3 |   _      _        3      y
row4 |  4,9     z        4      z
我在第2列中写了一些值(使用XLWT),如下所示:

      col1     col2    col3    col4
      -----------------------------
row1 | 2,3,1    _        1      w
row2 | 3,2,7    _        2      x
row3 |   _      _        3      y
row4 |  4,9     _        4      z
      col1     col2    col3    col4
      -----------------------------
row1 | 2,3,1  x,y,w      1      w
row2 | 3,2,7   y,x       2      x
row3 |   _      _        3      y
row4 |  4,9     z        4      z
我的问题是,我的代码在正确的位置迭代了正确的值,但是迭代次数太多(我认为这是嵌套循环的结果)

下面是代码中最重要的部分(绒毛已被剪掉)

我之前在这方面得到了帮助,我认为它是有效的,但我想它并不像我最初认为的那样起作用:

只是在寻找防止不断迭代的选项。以下是我的cmd中出现的内容:


红色括号显示正常打印的第一组值,然后开始在一小段时间内反复打印相同的值,然后再转到下一组值并重复打印这些值。

这更有意义:

def question():
    for x in xrange(sheet.nrows): #iterates over all rows
        newtprint = set()
        for i in xrange(len(newton)): #col1
            for n in xrange(len(james)): #col2
                if newton[i] == james[n]:
                    newtprint.add(path[n]) #adds specified col4 value into set
        print newtprint, x #writes current set being written and row it's written into
        sheety.write(x, 1, str(newtprint)) #writes into col2 based on col4 sets
        wb.save('C:/.../names.xls')

将每一行的
newprint
写入新文件。因此,您应该为每一行创建一个新集。

括号内的屏幕截图的哪一部分是“正常”的,因为在我看来都是一样的。我在最后打印了行值。第一行值“22”是正确的(括号顶部),其余的是22的重复。缩进在python中很重要。您的
print
sheety.write
语句对每一行都重复,因此即使您的条件不满足,它也会打印
newprint,x
。非常感谢您,哈哈。我不敢相信答案竟如此简单。这工作做得很好!答案通常很简单,但找到它可能很困难。