2016-09-02 1 views
0

Я хочу напечатать конкретную строку только один раз в цикле, но instu результата в одной строке дает тот же результат четыре раза, пожалуйста, помогите мне, как остановить цикл после печати на одной линииЯ хочу напечатать определенную строку только один раз в цикле с использованием python 3.4

Вот полный HTML и питон код также с результатом этого сценария

<ul class="breadcrumbs" id="BREADCRUMBS"> 
 
    <li class="breadcrumb_item " itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"> 
 
    <a class="breadcrumb_link" href="/Tourism-g191-United_States-Vacations.html" itemprop="url" onclick="ta.setEvtCookie('Breadcrumbs', 'click', 'Country', 1, this.href); "> 
 
     <span itemprop="title">United States</span> 
 
    </a> 
 
    <span class="separator">›</span> 
 
    </li> 
 
    . 
 
    . 
 
    . 
 
    .
Python скрипт, который распечатать результат

ulpart = soup.find_all("ul", {"class": "breadcrumbs"}) 
 
    \t \t \t for unorder in ulpart: 
 
    \t \t \t \t div2 = soup.find_all("li", {"class": "breadcrumb_item "}) 
 
    \t \t \t \t for listitem in div2[0:]: 
 
    \t \t \t \t \t country = soup.select_one("li.breadcrumb_item a[onclick*=Country]").get_text(strip=True) 
 
    \t \t \t \t \t print(country)

Вот результат этого кода, печать же результата четыре времени

United State 
 
United State 
 
United State 
 
United State

Но я хочу Соединенные государства только один раз, как это:

United State

ответ

0

, так как вы используете неупорядоченные списки, которые можно использовать питон набор типов данных (если вам нужен список использования заказа):

printed = set() 

ulpart = soup.find_all("ul", {"class": "breadcrumbs"}) 
       for unorder in ulpart: 
        div2 = soup.find_all("li", {"class": "breadcrumb_item "}) 
        for listitem in div2[0:]: 
         country = soup.select_one("li.breadcrumb_item a[onclick*=Country]").get_text(strip=True) 
         printed.add(country) 
+0

Просто нажмите магии и добиться того, что я хочу с вашей помощью:) – Hassan

0
printed_countries = list() 
ulpart = soup.find_all("ul", {"class": "breadcrumbs"}) 
       for unorder in ulpart: 
        div2 = soup.find_all("li", {"class": "breadcrumb_item "}) 
        for listitem in div2[0:]: 
         country = soup.select_one("li.breadcrumb_item a[onclick*=Country]").get_text(strip=True) 
         if not country in printed_countries: 
          print(country) 
          printed_countries.append(country) 
Смежные вопросы