saltare la riga completa se len () della colonna è inferiore a 10 in pitone

sto cercando di applicare un if nel mio Django view script che saltare la riga completa del prodotto se la descrizione Lunghezza è inferiore a 10, ma non so come raggiungere questo obiettivo..

questa è la mia vista Django che chiama una API e salvare i dati nel mio database e, come si vedrà nella sezione commentata questo è quello che sono venuto fuori con finora:

def api_data(request):
    if request.GET.get('mybtn'):  # to improve, == 'something':
        resp_1 = requests.get(
            "https://www.headout.com/api/public/v1/product/listing/list-by/city?language=fr&cityCode=PARIS&limit=5000&currencyCode=CAD",
            headers={
                "Headout-Auth": HEADOUT_PRODUCTION_API_KEY
            })
        resp_1_data = resp_1.json()
        base_url_2 = "https://www.headout.com/api/public/v1/product/get/"

        translator = Translator()

        for item in resp_1_data['items']:
            print('parsing, translating and saving item {}'.format(item['id']))
            # concat ID to the URL string
            url = '{}{}'.format(base_url_2, item['id'] + '?language=fr')

            # make the HTTP request
            resp_2 = requests.get(
                url,
                headers={
                    "Headout-Auth": HEADOUT_PRODUCTION_API_KEY
                })
            resp_2_data = resp_2.json()


            descriptiontxt = resp_2_data['contentListHtml'][0]['html'][0:2040] + ' ...'

            soup = BeautifulSoup(descriptiontxt, 'lxml')
            parsed = soup.find('p').text


            #what I tried so far

            #if len(parsed) < 10:
            #   skip the complete row and go to the next one


            translation = translator.translate(parsed, dest='fr')

            titlename = item['name']
            titlefr = translator.translate(titlename, dest='fr')

            destinationname = item['city']['name']
            destinationfr = translator.translate(destinationname, dest='fr')

            Product.objects.get_or_create(
                title=titlefr.text,
                destination=destinationfr.text,
                description=translation.text,
                link=item['canonicalUrl'],
                image=item['image']['url']
            )

            time.sleep(2)

    return render(request, "form.html")

si prega di aiutare.

EN From: skipping the complete row if len() of column is lower than 10 in python

More similar articles:

12 Comments

  1. così è il tuo problema che la lunghezza viene restituito sbagliato? oppure è restituire la lunghezza corretta, ma è sufficiente saltare il ciclo della lunghezza è inferiore a 10?

  2. sta restituendo le lunghezze corrette, ma vorrei saltare il loop se la descrizione è inferiore a 10. perché la maggior parte del tempo, se uno dei prodotti hanno una descrizione molto breve lunghezza, non c’è immagini allegare ad esso e voglio fare in modo che ogni prodotto sono completi.

  3. hai solo bisogno di continue se la lunghezza è inferiore a 10 così,

    if len(parsed) < 10:
        continue

    questo vi farà saltare l’iterazione corrente.

    spero che questo aiuta!

    1. appena provato e ottengo ancora l’indice di lista fuori dall’errore di intervallo con il traceback che punta verso questa riga: descriptiontxt = resp 2 data [‘contentListHtml’] [] [‘html’] [: 2040] + ‘…’
    2. che dire di questo: try:
      descriptiontxt = resp_2_data['contentListHtml'][0]['html'][0:2040] + ' ...'
      except IndexError:
      continue

Leave a Reply

Your email address will not be published. Required fields are marked *