индекс строки вне диапазона, может кто-нибудь мне помочь - PullRequest
0 голосов
/ 22 октября 2019

Ошибка:

string index out of range' in line[0]=='1'

Код:

r = requests.post("http://www.anbima.com.br/informacoes/est-termo/CZ-down.asp",
    data={'Dt_Ref': date.strftime("%d/%m/%Y"), 'saida': 'txt', 'Idioma': 'US'})

parametros = []  # primeira tabela
ETTJ = []  # segunda tabela

for line in r.text.split('\r\n')[1:-1]:
    linesplit = line.split('@')[1:]
    # convertendo campos vazios para nan
    for idx, e in enumerate(linesplit):
        if e in ['', '--']:
            linesplit[idx] = np.nan

    if line[0] == '1':
        parametros.append(linesplit)
    elif line[0] == '2':
        ETTJ.append(linesplit)

if len(parametros)<=0 or len(ETTJ)<=0:
    return False, False

parametros = pd.DataFrame(parametros[1:], columns=parametros[0])
ETTJ = pd.DataFrame(ETTJ[2:], columns=ETTJ[1])

ETTJ['Business Day'] = ETTJ['Business Day'].str.replace(',', '')
ETTJ['Business Day'] = ETTJ['Business Day'].astype(int)

for column in ['Indexed', 'Prefixed', 'BEI']:
    ETTJ[column] = ETTJ[column].astype(float).fillna(0.0)

for column in ['Beta 1', 'Beta 2', 'Beta 3', 'Beta 4', 'Lambda 1', 'Lambda 2']:
    parametros[column] = parametros[column].astype(float).fillna(0.0)

Ответы [ 2 ]

0 голосов
/ 22 октября 2019

Вы можете проверить, есть ли в line какие-либо символы, прежде чем индексировать его:

for line in r.text.split('\r\n')[1:-1]:
    linesplit = line.split('@')[1:]
    # convertendo campos vazios para nan
    for idx, e in enumerate(linesplit):
        if e in ['', '--']:
            linesplit[idx] = np.nan

    if len(line) == 0:
        pass #or whatever is appropriate
    elif line[0] == '1':
        parametros.append(linesplit)
    elif line[0] == '2':
        ETTJ.append(linesplit)
0 голосов
/ 22 октября 2019

строка пуста. вот почему вы получаете строковый индекс вне диапазона

...