首页 > 解决方案 > 用于动态变量的列表 - 与第一个和最后一个字符串一起传递的额外字符

问题描述

将列表用于动态变量时遇到问题...列表中的第一项和最后一项与其他字符一起传递。我是python的新手,所以我希望这是一个简单的修复......

symbols=['ALXN','AMAT','AMD','AMGN','AKAM']
print(symbols[0])
print(symbols[1])
print(symbols[2])
print(symbols[3])
print(symbols[4])

while 1: 
    
    day_bars_url = '{}/day?symbols={}&limit=6'.format(config.BARS_URL, symbols)
    r2 = requests.get(day_bars_url, headers=config.HEADERS)
    datadaily = r2.json()

    for symbol in datadaily:
        print("CREATING DAY BAR CSV FOR STOCK: " + symbol)

输出如下所示:

ALXN
AMAT
AMD 
AMGN
AKAM

CREATING DAY BAR CSV FOR STOCK:  'AKAM']
CREATING DAY BAR CSV FOR STOCK:  'AMAT'
CREATING DAY BAR CSV FOR STOCK:  'AMD'
CREATING DAY BAR CSV FOR STOCK:  'AMGN'
CREATING DAY BAR CSV FOR STOCK: ['ALXN'

希望输出为:

ALXN
AMAT
AMD 
AMGN
AKAM

CREATING DAY BAR CSV FOR STOCK:  AKAM
CREATING DAY BAR CSV FOR STOCK:  AMAT
CREATING DAY BAR CSV FOR STOCK:  AMD
CREATING DAY BAR CSV FOR STOCK:  AMGN
CREATING DAY BAR CSV FOR STOCK:  ALXN

标签: pythonlistdynamic

解决方案


问题: 通过查看您的代码,您似乎正在调用:

day_bars_url = '{}/day?symbols={}&limit=6'.format(config.BARS_URL, symbols)

这样你的symbols参数看起来像

?symbols=['ALXN','AMAT','AMD','AMGN','AKAM']

暗示您错误地获取了参数(['ALXN'例如)。

解决方案: 您可以通过在使用前将列表转换为字符串来解决此问题:

symbols_text = ','.join(symbols)
day_bars_url = '{}/day?symbols={}&limit=6'.format(config.BARS_URL, symbols_text)

这样,join()将使用您的符号创建一个字符串,它们之间有逗号:

?symbols=ALXN,AMAT,AMD,AMGN,AKAM

希望这个答案有用;)


推荐阅读