-1

更新: if ステートメントが実行されていません。Django の外部でスクリプトをテストし、Python のみで作業したため、これは奇妙です。

この質問がここで何度も聞かれていることは知っていますが、エラーを理解するのに役立つ答えが見つかりません. これが私が得るエラーです:

local variable 'what_i_need' referenced before assignment

VIEWS の私のコードは次のとおりです。

from django.http import HttpResponse
from django.shortcuts import render

from urllib2 import urlopen
from bs4 import BeautifulSoup

def test(request):
    someURL = "https://www.example.com/"
    urlOpen = urlopen(someURL).read()
    soup = BeautifulSoup(urlOpen)
    for x in soup.findAll('span'):
        if 'something' in str(x):
            info = x.get_text()
            info = info.split()
            info = info[0]
            info = info.replace(".", '')
            what_i_need = info
    return HttpResponse(what_i_need)

私は何を間違っていますか?

4

1 に答える 1

2

問題はif発言です。実行されない場合、what_i_needは初期化されないため、エラーになります (初期化された変数を に渡すことができないためHttpResponse)。などに初期化するだけNoneです(必要に応じて)

def test(request):
    someURL = "https://www.example.com/"
    urlOpen = urlopen(someURL).read()
    soup = BeautifulSoup(urlOpen)
    what_i_need = None            # Initialized here
    for x in soup.findAll('span'):
        if 'something' in str(x):
            info = x.get_text()
            info = info.split()
            info = info[0]
            info = info.replace(".", '')
            what_i_need = info
    return HttpResponse(what_i_need)
于 2013-07-09T17:25:43.137 に答える