if语句中的字符串匹配不起作用

时间:2017-09-28 22:13:44

标签: python-3.x

我对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是什么。

我在编程方面非常环保,所以如果这有点基础,我很抱歉。

1 个答案:

答案 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()):