我希望提取满足两种情况的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将日志文件分成单独的文件。因此,我希望特定日期的所有读数都可以存储在一个文件中。
答案 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
。不管怎样,最好在这种情况下添加括号以便清晰。