programing

목록 인덱스가 범위를 벗어남'을 예외로 처리하려고 합니다.

elecom 2023. 5. 18. 20:45
반응형

목록 인덱스가 범위를 벗어남'을 예외로 처리하려고 합니다.

BeautifulSoup을 사용하여 HTML을 구문 분석하고 있습니다.

HTML에서 특정 데이터(루프에 사용)를 가져와서 특정 목록에 추가합니다.

문제는 일부 HTML의 형식이 다르다는 것입니다(그리고 그들은 내가 원하는 데이터를 가지고 있지 않습니다).

그래서 예외 처리를 사용하고 가치를 추가하려고 했습니다.null(데이터의 순서가 중요하기 때문에 나는 이것을 해야 합니다.

예를 들어, 다음과 같은 코드가 있습니다.

soup = BeautifulSoup(links)
dlist = soup.findAll('dd', 'title')
# I'm trying to find content between <dd class='title'> and </dd>
gotdata = dlist[1]
# and what i want is the 2nd content of those
newlist.append(gotdata)
# and I add that to a newlist

그리고 일부 링크에는 아무것도 없습니다.<dd class='title'>그래서 제가 하고 싶은 것은 문자열을 추가하는 것입니다.null대신 목록에 추가합니다.

다음 오류가 나타납니다.

list index out of range.

제가 시도한 것은 다음과 같은 행을 추가하는 것입니다.

if not dlist[1]:  
   newlist.append('null')
   continue

하지만 잘 되지 않습니다.여전히 오류가 표시됩니다.

list index out of range.

이거 어떻게 해야 돼요?예외 처리를 사용해야 합니까?아니면 더 쉬운 방법이 없을까요?

좋은 의견이라도 있나?어떤 도움이든 정말 좋을 것입니다!

예외를 처리하는 것이 방법입니다.

try:
    gotdata = dlist[1]
except IndexError:
    gotdata = 'null'

물론 당신은 또한 확인할 수 있습니다.len()dlist그러나 예외를 다루는 것이 더 직관적입니다.

예외를 처리하거나 길이를 테스트하는 두 가지 옵션이 있습니다.

if len(dlist) > 1:
    newlist.append(dlist[1])
    continue

또는

try:
    newlist.append(dlist[1])
except IndexError:
    pass
continue

두 번째 항목이 없을 경우 첫 번째 항목을 사용하고, 가끔 두 번째 항목이 없을 경우 두 번째 항목을 사용합니다.

삼원짜리면 충분합니다.변경:

gotdata = dlist[1]

로.

gotdata = dlist[1] if len(dlist) > 1 else 'null'

이것은 더 짧은 표현 방법입니다.

if len(dlist) > 1:
    gotdata = dlist[1]
else: 
    gotdata = 'null'

더 짧은 방법에 관심이 있는 모든 사람을 위해:

gotdata = len(dlist)>1 and dlist[1] or 'null'

하지만 최상의 성능을 위해서는False대신에'null'한 줄 테스트로 충분합니다.

gotdata = len(dlist)>1 and dlist[1]

때때로 TheteMaster♦를 참조하여 값이 '\n' 또는 null로 지정된 오류가 발생하고 ValueError를 처리하는 데 필요한 오류를 수행합니다.

예외를 처리하는 것이 최선의 방법입니다.

try:
    gotdata = dlist[1]
except (IndexError, ValueError):
    gotdata = 'null'
for i in range (1, len(list))
    try:
        print (list[i])

    except ValueError:
        print("Error Value.")
    except indexError:
        print("Erorr index")
    except :
        print('error ')

언급URL : https://stackoverflow.com/questions/11902458/i-want-to-exception-handle-list-index-out-of-range

반응형