Python&&并且条件不起作用

时间:2016-09-05 16:25:43

标签: python conditional extraction conditional-operator data-extraction

我希望提取满足两种情况的CSV文件行。

例如,我想提取一条具有特定唯一代码和特定日期的行。

目前,我的代码只提取符合以下条件之一的行:

for log in line:

with open("log.csv", 'a') as csvfile:

    if ("code123" and "29/07/2016") in line:   
            print(line)

我也试过

with open("log.csv", 'a') as csvfile:

    if ("code123") and ("29/07/2016 ") in line:   
            print(line)

但似乎提取与该日期匹配的行,但不是唯一代码。

日志文件的格式有点像这样:

code123,1001,19 / 07/2016 14:01,100

我在日期之后尝试使用和不使用空格代码:

    if ("code123") and ("29/07/2016") in line:   

    if ("code123") and ("29/07/2016 ") in line: 

请注意,在同一个单元格中有一个时间,因为日期是个问题。

但它似乎只是提取仅与日期匹配的行(并打印任何具有日期读数的唯一代码,而不是指定的日期。)

有人可以帮忙吗?

我尝试这样做的原因是我可以根据日期和唯一ID将日志文件分成单独的文件。因此,我希望特定日期的所有读数都可以存储在一个文件中。

1 个答案:

答案 0 :(得分:0)

if "code123" in line and "29/07/2016" in line:

由于and返回False或最后一个操作数,即

x and y == y  # iff bool(x) is True and bool(y) is True

这部分

("code123" and "29/07/2016") 

始终评估为" 29/07 / 2016"你和

一起离开了
if "29/07/2016" in line:

原因

a and b in c == (a and b) in c   

而不是(a) and (b in c),取决于运算符优先级规则:details

优先规则也负责

a in c and b in c == (a in c) and (b in c)

因为in的优先级高于and。不管怎样,最好在这种情况下添加括号以便清晰。