Список, используемый для динамической переменной — дополнительные символы, передаваемые с первой и последней строкой

#python #list #dynamic

#python #Список #динамический

Вопрос:

Возникли проблемы с использованием списка для динамической переменной…первый и последний элементы в списке передаются с дополнительными символами. Я новичок в 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={}amp;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
  

Комментарии:

1. Вы пытаетесь передать список Python в API через querystring. Мы не знаем, что это за API, но вы, вероятно, захотите сделать что-то вроде .format(config.BARS_URL, ",".join(symbols)) .

Ответ №1:

Проблема: глядя на ваш код, кажется, что вы вызываете:

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

таким образом, чтобы ваш symbols параметр выглядел как

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

подразумевая, что вы неправильно получили параметры ( ['ALXN' например).

Решение: вы можете решить эту проблему, преобразовав свой список в строку перед использованием:

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

Таким образом, join() будет создана строка с вашими символами с запятой между ними:

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

Надеюсь, этот ответ был полезен 😉

Комментарии:

1. Рад слышать! Затем вы можете выбрать его в качестве ответа, чтобы оказать поддержку и закрыть тему 😉

Ответ №2:

Вы передаете список непосредственно в строке

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

вместо этого вы должны передать

 day_bars_url = '{}/day?symbols={}amp;limit=6'.format(config.BARS_URL, ",".join(symbols))