我对Python很陌生,但我无法弄清楚我的代码有什么问题。
我有一个csv文件,我试图根据所述行的内容删除行。我使用csv模块制作列表列表,列表中的每个列表都是一行。
这第一部分按照我的预期运作。它遍历所有数据行,如果字符串匹配为true,则忽略该行并在代码中打印该语句。如果为false,则会占用该行并将其附加到名为' inactive_list'的新列表中。
print('Inactive Pass\n')
inactive_list.insert(0, data[0])
for row in range(1, len(data)):
if not 'Active' in data[row][9]:
print('Removed row #' + str(row) + '\n' + str(data[row]) +'\n')
else:
inactive_list.append(data[row])
print(inactive_list)
在同一个函数中,我有一个for循环,如下所示:
print('\n\n\nDemo Pass')
for row in range(1, len(inactive_list)):
if 'demo' or 'demo'.upper() or 'demo'.title() in inactive_list[row][0]:
print('Removed row #' + str(row) + '\n' + str(data[row]) +'\n')
else:
demo_list.append(data[row])
print(demo_list)
这个循环与上面的循环非常相似,不同之处在于我试图匹配" demo"," Demo"或" DEMO"在列表中每个列表的索引0处 - 如果匹配则与第一个循环相同。基本上将不匹配的行附加到新列表。
第二个循环,只是匹配每一行,无论每个列的索引0是什么。
我在编程方面非常环保,所以如果这有点基础,我很抱歉。
答案 0 :(得分:0)
更改以下内容
if 'demo' or 'demo'.upper() or 'demo'.title() in inactive_list[row][0]:
到
if inactive_list[row][0] in ('demo', 'demo'.upper(), 'demo'.title()):