1

두 조건을 모두 만족하는 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시 1분, 내가 함께하고 뒤에 공백없이 코드를 시도했습니다 100

날짜 :

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

과 t와 같은 셀의 시간이 있음을

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

넣다 사실 그는 날짜가 문제입니다.

그러나 단지 날짜와 일치하는 행을 추출하는 것으로 보이며 지정된 날짜가 아닌 독서가있는 고유 한 코드를 인쇄합니다.

아무도 도와 줄 수 있습니까?

내가 이것을하려고하는 이유는 로그 파일을 날짜와 고유 ID를 기반으로 별도의 파일로 분리 할 수 ​​있기 때문입니다. 그래서 특정 키에 대한 특정 날짜의 모든 수치가 하나의 파일에 있어야합니다.

+1

[여러 값에 대해 하나의 변수를 테스트하려면 어떻게합니까?] (http://stackoverflow.com/questions/15112125/how-do-i-test-one-variable-against-multiple-values) –

+0

왜''if ("code123"in 줄)과 (''29/07/2016 줄) :'? – galah92

+0

모든 경우에 파이썬은'if ("code123") == True'보다는'if ("code123") inline'을 검사합니다. 'if ("code123"in line)과 ("29/07/2016"in line) :' – James

답변

0

and 반환 False 또는 마지막 피연산자 때문에

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

을 시도합니다.

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)은 연산자 우선 순위 규칙 : inand보다 높은 우선 순위를 가지고 있기 때문에 http://www.tutorialspoint.com/python/operators_precedence_example.htm

선행 규칙은

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

에 대한 책임이 있습니다.이 경우 어쨌든 명확성을 위해 괄호를 추가하는 것이 좋습니다.

+2

'("code123"및 "29/07/2016")'은 실제로 ""29/07/2016 "이며,"True "가 아닙니다. 물론 –

+0

맞습니다. – thebjorn

+0

해결책을 제시해 주셔서 감사 드리며 또한 초기 코드가 올바르지 않은 이유에 대해 설명해 주셔서 감사합니다. – user3421420