传递字符串数组列表以在Python中起作用

我是Python的初学者,正在尝试编写一个函数。

对于符号,我有一个要从数据库中获取的列表

cur.execute("SELECT sym FROM data")

list = cur.fetchall()              ####fetches list from database column

 

[['AAPL']                       ####This is the output of list
 ['MSFT']
 ['GOOGL']
 ['TSLA']
 ['AMZN']
 ['FB']
 ['V']
 ['BABA']
 ['WMT']]

如何为以下功能在符号中传递此列表的值?

    symbol = 
    url_cf = 'https://somewebsite.com' + symbol

    def scrape_data():
        def dir_create():
            # base dir
            _dir = "/Users/Desktop/Companies"
    
            # create dynamic name
            _dir2 = os.path.join(_dir,symbol)
    
            # create 'dynamic' dir,if it does not exist
            if not os.path.exists(_dir2):
                os.makedirs(_dir2)
    
    
        dir_create()
    
    
        # Scraping Cash Flow
        def cash_flow():
        .
        .
        page = requests.get(url_cf,headers)
        .
        .
        #### Some function for scraping
        .
        .
        path = '/Users/Desktop/Companies' + '/' + symbol
        sheet_name = str('cash_flow_' + symbol + '.xlsx')
        .
        .
        cash_flow()

scrape_data()

我希望对列表中的每个符号执行scrape_data()。

iCMS 回答:传递字符串数组列表以在Python中起作用

使用参数和循环:

def scrape_data(symbol):
    url_cf = f'https://somewebsite.com/{symbol}'
    ....


for sym,in list:
    scrape_data(sym)

在Python3中,您可以使用f字符串使变量串联更容易 请注意,循环声明中sym之后的for。这将解压缩列表中的列表元素。如果每行有多个值,则此操作将失败,这对于您的数据库查询而言不应发生

,

如果我正确理解了您的问题,则只需将列表传递给这样的函数即可:

def scrape_data(symbol):
    #...

scrape_data(symbol)

在这种情况下,重要的一点是symbol是一个列表,您必须在函数内部遍历它们。 但是,如果您想为symbol中的每个值运行该函数,则应该执行以下操作:

def scrape_data(symbol):
    #...

for symb in symbol:
    scrape_data(symb)

在这种情况下,该函数将逐一地从列表symbol中获取元素。

另外,请重命名您的列表。您可以对函数外部的列表和函数内部的字符串使用相同的名称。

本文链接:https://www.f2er.com/1989518.html

大家都在问