나는 완전히 당황합니다. 큰 테이블에서 긁어 낸 HTML 블록이 있습니다. 그것은 다음과 같이 약 같습니다이터레이터의 내용은 어떻게 얻습니까?
이<td align="left" class="page">Number:\xc2\xa0<a class="topmenu" href="http://www.example.com/whatever.asp?search=724461">724461</a> Date:\xc2\xa01/1/1999 Amount:\xc2\xa0$2.50 <br/>Person:<br/><a class="topmenu" href="http://www.example.com/whatever.asp?search=LAST&searchfn=FIRST">LAST,\xc2\xa0FIRST </a> </td>
(사실, 더 나쁜 모습,하지만 난 줄 바꿈을 많이 밖으로 regexed) 나는 아웃 라인을 얻고, 날짜/금액 라인을 중단 할 필요가
을 . 시작해야 할 장소가 HTML 블록의 하위 항목을 찾는 것 같았습니다. 블록은 문자열이기 때문에 정규 표현식이 나에게 다시 돌려주었습니다. 그렇게 했어.
text_soup = BeautifulSoup(text)
text_children = text_soup.find('td').childGenerator()
I can only iterate through text_children
once 나는 그것이 왜 그런지 이해하지 못한다. 그것은 listiterator
유형입니다. 이해하기가 어렵습니다.
나는 for 루프로 무언가를 반복 할 수 있다면 text_children [0]과 같은 어떤 요소를 호출 할 수 있다고 가정하는 데 익숙하다. iterator의 경우는 그렇지 않습니다. 내가 가진 목록을 작성하는 경우 :
my_array = ["one","two","three"]
을 나는 배열의 두 번째 항목을 볼 수 my_array[1]
를 사용할 수 있습니다.
TypeError: 'listiterator' object is not subscriptable
어떻게 반복자의 내용을받을 수 있나요 : 나는 text_children[1]
을하려고하면 오류가 발생합니다?
생성기는 메모리를 절약하도록 설계되었으며 항목을 하나씩 생성 할 때만 반복 트릭을 수행하도록 설계되었습니다. –
물론 나는 독서 독서를 읽음으로써 이것을 알아 냈습니다. 나는 대답을 받아들이 기 위해 조금 기다려야 만한다. – Amanda