首页 > 解决方案 > 块缩进 - python

问题描述

新编码器在这里。我遇到了一段代码的缩进/块问题。我想知道是否有人可以帮助我解决这个问题。谢谢你。

from bs4 import BeautifulSoup as soup
from urllib.request import urlopen as uReq
import requests

symbol = ''
url = "https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=" + symbol + "&type=&dateb=&owner=exclude&start=0&count=100&output=atom"
uClient = uReq(url)
page_html = uClient.read()
uClient.close()
html = soup(page_html, 'html.parser')
entries = html.findAll("entry")

shouldContinue = True
link = ""
for entry in entries:

    if shouldContinue and (
            entry.find("category")["term"].lower() == "10-k" or entry.find("category")["term"].lower() == "10-q" or
            entry.find("category")["term"].lower() == "20-f"):


        firstUrl = entry.find("link")["href"]

        uClientFirstUrl = uReq(firstUrl)
        page_html_firstUrl = uClientFirstUrl.read()
        uClientFirstUrl.close()
        htmlFirstUrl = soup(page_html_firstUrl, 'html.parser')

        tds = htmlFirstUrl.findAll("table")[1].findAll("td")
        foundtd = False
        for td in tds:
            if foundtd == True:
                link = "https://www.sec.gov" + td.find("a")["href"]
                foundtd = False
            if "xbrl instance" in td.text.lower():
                foundtd = True

            shouldContinue = False

return link

    def getCash(url, symbol):
        uClient = uReq(url)
        page_html = uClient.read()
        uClient.close()

        xml = soup(page_html, 'xml')

        cash = xml.findAll("us-gaap:CashAndCashEquivalentsAtCarryingValue")
        if len(cash) == 0:
            cash = xml.findAll("ifrs-full:Cash")
            if len(cash) == 0:
                cash = xml.findAll("us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents")
                if len(cash) == 0:
                    cash = xml.findAll("us-gaap:Cash")

        return cash;

我在第 42 行“def getCash(url, symbol):”处收到错误消息。我不知道我必须缩进哪个块。

标签: python-3.x

解决方案


问题是getCash缩进的方法(这在python中很重要)。您只需将其移回即可。您的代码中似乎还有一个流氓return link语句,我在下面的示例中已将其删除(我假设它是一个粘贴错误)。

for entry in entries:

    if shouldContinue and (
            entry.find("category")["term"].lower() == "10-k" or entry.find("category")["term"].lower() == "10-q" or
            entry.find("category")["term"].lower() == "20-f"):


        firstUrl = entry.find("link")["href"]

        uClientFirstUrl = uReq(firstUrl)
        page_html_firstUrl = uClientFirstUrl.read()
        uClientFirstUrl.close()
        htmlFirstUrl = soup(page_html_firstUrl, 'html.parser')

        tds = htmlFirstUrl.findAll("table")[1].findAll("td")
        foundtd = False
        for td in tds:
            if foundtd == True:
                link = "https://www.sec.gov" + td.find("a")["href"]
                foundtd = False
            if "xbrl instance" in td.text.lower():
                foundtd = True

            shouldContinue = False


def getCash(url, symbol):
    uClient = uReq(url)
    page_html = uClient.read()
    uClient.close()
    xml = soup(page_html, 'xml')

    cash = xml.findAll("us-gaap:CashAndCashEquivalentsAtCarryingValue")
    if len(cash) == 0:
        cash = xml.findAll("ifrs-full:Cash")
        if len(cash) == 0:
            cash = xml.findAll("us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents")
            if len(cash) == 0:
                cash = xml.findAll("us-gaap:Cash")

    return cash

推荐阅读