Python-如何仅显示一次for循环?

时间:2018-08-20 07:45:28

标签: python

我正在尝试迭代“ new.xlsx”中的字母列,如果字母存在于“ original.xlsx”中,请复制数据并将其粘贴到new.xlsx中。 以下代码是我所做的。

import openpyxl

dappend = openpyxl.load_workbook('C:/Users/User/Desktop/original.xlsx', data_only=True)
dp1 = dappend.active
consider = openpyxl.load_workbook('C:/Users/User/Desktop/new.xlsx', data_only=True)
cd1 = consider.active

li2 = []
for c in range(2,cd1.max_row+1):
    name = cd1.cell(row=c,column=4).value
    for d in range(2,dp1.max_row+1):
        if cd1.cell(row=c,column=4).value == dp1.cell(row=d,column=4).value:
            li2=[dp1.cell(row=d,column=4).value,dp1.cell(row=d,column=5).value,dp1.cell(row=d,column=6).value,dp1.cell(row=d,column=7).value]
            print(li2)
            d = d + 1
        else:
            continue
    c = c + 1

我的输出是:

['A', None, 'Jonathan', None]
['A', '', 'Jonathan', '']
['B', None, 'Cassandra', None]
['B', None, 'Rose', None]
['B', 'Tyler', None, None]
['B', '', 'Cassandra', '']
['B', '', 'Rose', '']
['B', 'Tyler', '', '']
['C', 'Sam', None, None]
['C', 'Sam', '', '']
['D', 'Jeremy', None, None]
['D', 'Jeremy', '', '']

但是我希望输出像...

['A', '', 'Jonathan', '']
['B', '', 'Cassandra', '']
['B', '', 'Rose', '']
['B', 'Tyler', '', '']
['C', 'Sam', '', '']
['D', 'Jeremy', '', '']

请帮助...

1 个答案:

答案 0 :(得分:0)

首先发表评论:c = c + 1和d = d + 1行什么都不做,因为在循环的开头,它们被重新定义为列表中的下一项:range(2,5)=(2, 3,4)

现在为您解决: 我建议您在打印命令之前添加一个if

if None in li2 :
   # do nothing
else:
   print(li2)