필자는 Python을 처음 사용하고 XML을 읽는 연습 프로젝트를 작성하려고합니다. 어떤 이유로이 if 문은 빈 공백 행에 대해서도 트리거됩니다.Legit python if 문?
if '<' and '>' in line:
이유가 무엇입니까?
필자는 Python을 처음 사용하고 XML을 읽는 연습 프로젝트를 작성하려고합니다. 어떤 이유로이 if 문은 빈 공백 행에 대해서도 트리거됩니다.Legit python if 문?
if '<' and '>' in line:
이유가 무엇입니까?
코드는 (명확성을 위해 parethesised) 말한다 : 당신이 의도하지 않는 경우 귀하의 경우 true
로 평가
if True and ('>' in line):
:
if '<' and ('>' in line):
로 평가한다. 그래서, 대신 시도 (괄호는 선택 사항이지만 명확성을 위해 추가) :
이if ('<' in line) and ('>' in line):
'true 일 경우 ('>>') ': 항상 사실입니까? '또는'를 사용하면 나는 그것을 볼 수 있었다. –
이제 내 괄호도 섞어 버렸습니다 .-P 고정 ... –
대화식 프롬프트에서 실제로 입력 해 보셨습니까? 'in'과'and'의 상대적인 우선 순위는 괄호가없는이 경우 정확하며'True in '''은 항상'True'를 리턴하지는 않습니다.'TypeError'를 발생시킵니다. – ncoghlan
당신은 아마 원하는 :
if ('<' in line) and ('>' in line):
버전이이 해석되고있다 :
if ('<') and ('>' in line):
당신이 무슨 뜻인지 아마 아닙니다.
괄호를 사용하면 사물을 매우 분명하게 나타낼 수 있습니다.
이것은 정확하지만 OP 문제를 설명하지는 않습니다 (즉,'line == '''OP의 표현식이 오류에도 불구하고'False'를 반환해야하는 경우). – ncoghlan
시도 :
if '<' in line and '>' in line:
, 당신은 을 피할 것 많이 함 함정 :
파일에서 빈 줄을 칠 때 line
이 정말로 비어있는 것이 확실합니까? 당신이 '<' and '>' in line
을 쓸 때
는 인터프리터는 '<' and ('>' in line)
로하는 당신이 원하는 아니라고 본다 : 더 '<' in line and '>' in line
또는 all(x in line for x in '<>')
같은 후입니다. 하지만 원본을 포함하여 그 표현은 모두 line
이 비어있는 경우에는 사실이 아닙니다. 의 잘못된 형식은이지만, 문자열에 '>'
만 포함되어 있으면 잘못된 답을 제공합니다. 에 관계없이
>>> '<' and '>' in ''
False
>>> '<' and '>' in '<'
False
>>> '<' and '>' in '>' # Huh?
True
>>> 1 and 0 in [0] # Perhaps this will clarify matters
True
는 손으로 XML을 구문 분석하지 않습니다 - 사용하는 XML 파싱 라이브러리를 같은 표준 라이브러리에 포함 된
xml.etree.ElementTree
모듈로.
왜이 진술을 작성 했습니까? 이런 코드를 어디에서 보았습니까? 이게 어떻게되어 있다고 생각하니? –