在python中使变量等于字符串列表

在python中使变量等于字符串列表,python,pycharm,read.csv,Python,Pycharm,Read.csv,我正在开发一个从几个网站解析股票数据的程序。我为每只股票使用的网站都是相同的,幸运的是,它们中的大多数都很容易生成URL 例如:雅虎的股票摘要页面URL为“+ticker+”?p=“+ticker 在这里,我需要做的就是提示用户输入公司股票代码,我可以轻松生成一个可用的URL,用BeautifulSoup进行解析 ticker = input("Enter Company Ticker:") ticker = ticker.strip() URLyahooSum = "h

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

例如:雅虎的股票摘要页面URL为“+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
这部分很简单,我可以运行程序来解析用户输入的各个股票代码的数据,但是,现在,我试图将ticker变量设置为等于一篮子ticker,这些ticker将在篮子中的每个单独的ticker上运行程序,并将所有输出保存为不同的.csv文件,我可以将这些文件放入一个SQL数据库中,在该数据库中,我可以不断地将公司篮子从最好到最坏进行排序

我试图一次攻克一个方面,所以现在我只关心如何告诉程序将“ticker”变量分别设置到篮子中的每个ticker,并运行直到到达最后一个ticker


我已经在一个.csv文件的数据库中找到了我想要的一篮子公司股票代码,那么我如何才能告诉程序我想要“股票代码”等于这些公司中的每一家。如果我理解正确,您应该从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
要从文件中接收每个ticker,您需要以下代码

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

如果我理解正确,您应该从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
要从文件中接收每个ticker,您需要以下代码

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

如果您在列表
tickers\u list
中有tickers,您可以这样做

for ticker in tickers_list:
    print("https://finance.yahoo.com/quote/"+ticker+"?p="+ticker)
这称为for each循环,
ticker
变量将在循环的整个迭代过程中获取列表中每个项目的值。 因此,如果
tickers\u list=['ABC','BBC','CBC']
,这将使
tickers
的值在第一次迭代中为'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
都需要一个变量来填充,这就是为什么在将
url设置为当前url
时,百分号后面跟着两个
ticker
s。

如果列表中有ticker
tickers\u list
,您可以这样做

for ticker in tickers_list:
    print("https://finance.yahoo.com/quote/"+ticker+"?p="+ticker)
这称为for each循环,
ticker
变量将在循环的整个迭代过程中获取列表中每个项目的值。 因此,如果
tickers\u list=['ABC','BBC','CBC']
,这将使
tickers
的值在第一次迭代中为'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
都需要一个变量来填充,这就是为什么在将
url设置为当前url
时,百分号后面跟着两个
股票代码。

您所说的“现在我正试图将股票代码变量设置为等于一篮子股票代码”是什么意思?我的意思是,我希望程序在篮子中的每个股票代码上运行。例如,我希望程序在公司“a”上运行,输出结果,然后在公司“b”上运行(其中“a”和“b”在篮子中)。我所拥有的篮子是房地产投资信托基金,我正在收集它们解析后的csv文件数据,我可以用一个SQL程序将它们拉出来,并从本质上对它们进行排序。你说“现在我试图将ticker变量设置为等于一篮子ticker”是什么意思?我的意思是,我希望程序在篮子中的每个ticker上运行。例如,我希望程序在公司“a”上运行,输出结果,然后在公司“b”上运行(其中“a”和“b”在篮子中)。我的篮子里有房地产投资信托基金,我正在收集它们解析后的csv文件中的数据,我可以用SQL程序把它们拉出来,并基本上对它们进行排序。这只是一个简单的列表,比如:ticker=[ABC、BBC、CBC等]?没错。一个字符串列表:['ABC'、'BBC'、'CBC'、…],这是一个简单的列表,比如:ticker=[ABC、BBC、CBC等等]?没错。字符串列表:['ABC'、'BBC'、'CBC'、…],谢谢你的回答。现在的问题是如何让程序在每个股票代码上运行,一次一个。例如:在CBG上运行并输出结果,然后在AMD上运行并输出结果,依此类推。这个程序一次只能做一个吗?@michaelharris这是同样的逻辑。您可以从站点编写解析函数并将它们打印出来或保存到其他地方,而不是打印url。如果你还需要什么,我希望你能提供我更多的细节,这样我可以帮助你。谢谢你的回答。现在的问题是如何让程序在每个股票代码上运行,一次一个。例如:在CBG上运行并输出结果,然后在AMD上运行并输出结果,依此类推。这个程序一次只能做一个吗?@michaelharris这是同样的逻辑。您可以从站点编写解析函数并将它们打印出来或保存到某个地方,而不是打印url