Python&&;而且有条件不起作用

Python&&;而且有条件不起作用,python,conditional,extraction,conditional-operator,data-extraction,Python,Conditional,Extraction,Conditional Operator,Data Extraction,我希望提取满足这两个条件的CSV文件行 例如,我想提取一行,该行具有特定的唯一代码和特定的日期 目前,我的代码仅提取满足以下条件之一的行: 对于日志中的行: 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 ("code1

我希望提取满足这两个条件的CSV文件行

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

目前,我的代码仅提取满足以下条件之一的行:

对于日志中的行:

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)
但它似乎提取了与该日期匹配的行,但不包括唯一的代码

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

代码1231001129/07/2016 14:01100

我尝试了日期后有空格和没有空格的代码:

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

例如,在同一单元格中存在与日期相同的时间是一个问题

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

有人能帮忙吗

我尝试这样做的原因是,我可以根据日期和唯一ID将日志文件分为不同的文件。因此,我希望某个密钥的某个日期的所有读数都在一个文件中。

试试看

if "code123" in line and "29/07/2016" in line:
因为
返回
False
或最后一个操作数,即

x and y == y  # iff bool(x) is True and bool(y) is True
这部分

("code123" and "29/07/2016") 
始终评估为“2016年7月29日”,您将

if "29/07/2016" in line:
原因

a and b in c == (a and b) in c   
而不是
(c中的a)和(b)
,是由于运算符优先规则:

优先规则还负责

a in c and b in c == (a in c) and (b in c)
因为中的
的优先级高于
。无论如何,为了清楚起见,最好在本例中添加括号。

试试看

if "code123" in line and "29/07/2016" in line:
因为
返回
False
或最后一个操作数,即

x and y == y  # iff bool(x) is True and bool(y) is True
这部分

("code123" and "29/07/2016") 
始终评估为“2016年7月29日”,您将

if "29/07/2016" in line:
原因

a and b in c == (a and b) in c   
而不是
(c中的a)和(b)
,是由于运算符优先规则:

优先规则还负责

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

因为
中的
的优先级高于
。无论如何,为了清楚起见,最好在本例中添加括号。

为什么不只是
if(“code 123”在第行)和(29/07/2016在第行):
?在您使用的所有情况下,python都在检查
if(“code 123”)==True
,而不是
if(“code 123”)在第行
。使用
if(“code 123”在第行)和(“29/07/2016”在第行):
虽然它不是100%重复,但本质上是相同的,它只需要从等于替换为in,从或替换为to,以及为什么不只是
if(“code 123”在第行)和(29/07/2016在第行):
?在您使用的所有情况下,python正在检查第
行中的
if(“code123”)==True
,而不是
if(“code123”)。使用
如果(“代码123”在第行)和(“29/07/2016”在第行):
虽然它不是100%重复,但本质上是相同的,它只需要从等于中替换,从或到和
(“代码123”和“29/07/2016”)
实际上是
“29/07/2016”
,不是
True
。非常感谢您提供了解决方案,但也解释了我的初始代码不正确的原因。
(“code123”和“29/07/2016”)
实际上是
“29/07/2016”
,而不是
True
。非常感谢您提供了解决方案,但也解释了我的初始代码不正确的原因。