使变量等于Python中的字符串列表

问题描述 投票:0回答:2

我正在开发一个程序,可以解析来自多个网站的股票数据。我为每只股票使用的网站都是相同的,幸运的是,其中大多数都很容易生成 URL。

EX: 雅虎股票摘要页面 URL 为“https://finance.yahoo.com/quote/”+ticker+”?p="+ticker 我需要做的就是提示用户输入公司股票代码,我可以轻松生成一个可用的 URL 以使用 BeautifulSoup 进行解析

    ticker = input("Enter Company Ticker:")
    ticker = ticker.strip()
    URLyahooSum = "https://finance.yahoo.com/quote/"+ticker+"?p="+ticker
    print(URLyahooSum)

    >>> https://finance.yahoo.com/quote/CBG?p=CBG

这部分很简单,我可以运行程序来解析用户输入的各个代码的数据,但是,现在我尝试将代码变量设置为等于一篮子代码,这些代码将在每个代码上运行程序篮子里有单独的股票代码,并将所有输出保存为不同的 .csv 文件,我可以将这些文件放入 SQL 数据库中,在那里我可以不断地对篮子里的公司从最好到最差进行排名。

我试图一次征服一个方面,所以现在我只关心如何告诉程序为篮子中的每个股票单独设置“股票代码”变量,并运行直到它到达最后一个股票行情。

我已经在 .csv 文件的数据库中拥有了我想要的一篮子公司股票代码,那么我如何告诉程序我希望“股票代码”等于这些公司中的每一个。并为每个股票运行该程序。

python pycharm
2个回答
2
投票

如果我理解正确,您应该从 CSV 文件读取数据而不是用户输入。

我假设您有一个简单的 CSV 文件,如下所示 [名为:a.csv];

company,ticker
CBRE Group,CBG
Advanced Micro Devices,AMD
The Boeing Company, BA
Eli Lilly and Company, LLY
Xerox Corporation, XRX

要从文件中接收每个代码,您需要以下代码。

import csv
with open('a.csv', newline='') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        print(row['ticker'].strip())

脚本的结果

>>> CBG
>>> AMD
>>> BA
>>> LLY
>>> XRX

由于我们可以从文件中接收数据,因此这是脚本的最终版本:

import csv

with open('a.csv', newline='') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        ticker = row['ticker'].strip()
        URLyahooSum = "https://finance.yahoo.com/quote/"+ticker+"?p="+ticker
        print(URLyahooSum)

这将为您提供以下输出:

>>> https://finance.yahoo.com/quote/CBG?p=CBG
>>> https://finance.yahoo.com/quote/AMD?p=AMD
>>> https://finance.yahoo.com/quote/BA?p=BA
>>> https://finance.yahoo.com/quote/LLY?p=LLY
>>> https://finance.yahoo.com/quote/XRX?p=XRX

1
投票

如果您的列表中有股票代码

tickers_list
,您可以这样做

for ticker in tickers_list:
    print("https://finance.yahoo.com/quote/"+ticker+"?p="+ticker)

这称为 foreach 循环,并且

ticker
变量将在整个循环迭代中获取列表中每个项目的值。 因此,如果
tickers_list = ['ABC', 'BBC', 'CBC']
,这将使
ticker
在第一次迭代时具有“ABC”值,然后在第二次迭代中具有“BBC”值,第三次迭代时具有“CBC”值。

我认为这对你来说可能更有用,因为你可能有一个函数需要一个已经准备好的字符串来使用:

base_string = "https://finance.yahoo.com/quote/%s?p=%s"
for ticker in tickers_list:
    current_url = base_string % (ticker,ticker)
    my_function(current_url)

这称为字符串格式化,字符串中有一个占位符,稍后将其填充。

%s
中的每个
base_string
都需要一个变量来填充它,这就是为什么在制作
current_url
时百分号后面跟着两个
ticker

© www.soinside.com 2019 - 2024. All rights reserved.