2016-08-30 2 views
1

나는 companyNumbers라는 int 목록을 가지고있다. 온라인 API와 비교하여 유효한지 테스트합니다.파이썬 구조 중첩 된 시도 제외 구문

일부 회사 번호의 첫 자리가 올바르지 않으므로 번호를 확인한 다음 HTTP 오류 (잘못된 번호 표시)가 있으면 번호에서 첫 번째 자리를 뺀 번호를 다시 확인하고 싶습니다.

이 값이 다시 유효하지 않으면 오류 시트에 번호가 기록되고, 그렇지 않으면 correctNumbers에 저장됩니다.

for companyNumber in companyNumbers: 
    try: 
     r = s.profile(companyNumber).json() 
    except HTTPError: 
     try: 
      r = s.profile(companyNumber[1:]).json() 
     except HTTPError: 
      errorSheet.write(i, 0, companyNumber) 
    else: 
     correctNumbers.append(r) 

try/except/else 문을 구성하는 방법을 잘 모르겠습니다. try 블록 중 하나가 성공하면 활성화하려면 else 문이 필요합니다. 현재 중첩 된 try 블록은 아무 것도하지 않는 것 같습니다.

답변

1

try 오류가 발생할 때까지 코드를 중첩 실행합니다. 따라서 출력을 해당 레이어에도 넣어야합니다.

for companyNumber in companyNumbers: 
    try: 
     r = s.profile(companyNumber).json() 
     correctNumbers.append(r) 
    except HTTPError: 
     try: 
      r = s.profile(companyNumber[1:]).json() 
      correctNumbers.append(r) 
     except HTTPError: 
      errorSheet.write(i, 0, companyNumber) 
+0

이 말은 나에게 비현실적입니다. 반복되는 코드'correctNumbers.append (r)'이 있습니다. – LondonRob