Python && 和条件不工作
Python && And Conditional Not Working
我正在寻找满足两个条件的 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)
但似乎提取了与该日期匹配但不包含唯一代码的行。
日志文件的格式有点像这样:
code123, 1001, 29/07/2016 14:01, 100
我试过在日期后有和没有 space 的代码:
if ("code123") and ("29/07/2016") in line:
和
if ("code123") and ("29/07/2016 ") in line:
万一时间与日期在同一个单元格中是个问题。
但它似乎只是提取仅与日期匹配的行(并打印任何具有日期读数的唯一代码,而不是指定的代码)。
有人可以帮忙吗?
我尝试这样做的原因是我可以根据日期和唯一 ID 将日志文件分成单独的文件。所以我希望某个键的某个日期的所有读数都在一个文件中。
尝试
if "code123" in line and "29/07/2016" in line:
因为 and
returns 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)
,是由于运算符优先级规则:http://www.tutorialspoint.com/python/operators_precedence_example.htm
优先规则也负责
a in c and b in c == (a in c) and (b in c)
因为 in
的优先级高于 and
。无论如何,在这种情况下,为了清楚起见,最好添加括号。
我正在寻找满足两个条件的 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)
但似乎提取了与该日期匹配但不包含唯一代码的行。
日志文件的格式有点像这样:
code123, 1001, 29/07/2016 14:01, 100
我试过在日期后有和没有 space 的代码:
if ("code123") and ("29/07/2016") in line:
和
if ("code123") and ("29/07/2016 ") in line:
万一时间与日期在同一个单元格中是个问题。
但它似乎只是提取仅与日期匹配的行(并打印任何具有日期读数的唯一代码,而不是指定的代码)。
有人可以帮忙吗?
我尝试这样做的原因是我可以根据日期和唯一 ID 将日志文件分成单独的文件。所以我希望某个键的某个日期的所有读数都在一个文件中。
尝试
if "code123" in line and "29/07/2016" in line:
因为 and
returns 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)
,是由于运算符优先级规则:http://www.tutorialspoint.com/python/operators_precedence_example.htm
优先规则也负责
a in c and b in c == (a in c) and (b in c)
因为 in
的优先级高于 and
。无论如何,在这种情况下,为了清楚起见,最好添加括号。