2015-06-16 3 views
0

Я уже несколько дней пытался решить эту проблему, пытаясь понять, в чем проблема. Я получаю ниже ошибки:Python TypeError: аргумент для форматирования строки

TypeError: not all arguments converted during string formatting 

Вот мой код:

import numpy as np 
import pandas as pd 
import datetime as dt 
from urllib import urlretrieve 
%matplotlib inline 

url3='http://hopey.netfonds.no/tradedump.php?date= 20150523&paper=AAPL.O&csv_format=csv' 

year = '2015' 
month = '05' 
days = ['20', '21', '22', '23', '24'] 

AAPL = pd.DataFrame() 
for day in days: 
    AAPL = AAPL.append(pd.read_csv(url3 % (year, month, days), index_col=0, header=0, parse_dates=True)) 

AAPL.columns = ['bid', 'bdepth', 'bdeptht', 'offer', 'odepth', 'odeptht'] 
AAPL.info() 
+0

теперь его собирается быть закрыты как не ... –

+0

способность восстановления Пожалуйста, не редактируйте свой вопрос, чтобы включить предложенный ответ. Вопрос должен показать код, который имеет проблему. – BrenBarn

+0

Если вы собираетесь изменить свою историю (и вставить заполнители), вы не получите это сообщение об ошибке. И вы хотите интерполировать «день», а не «дни». –

ответ

3

Вы не никаких заполнителей в url3 и, таким образом, Python говорит вам, что не может вставить year, month или day значения в него.

Вам нужно использовать строки %[formattercode], чтобы сообщить Python, где интерполировать значения; %s будет принимать строки для вставки (и у вас уже есть строки):

url3 = 'http://hopey.netfonds.no/tradedump.php?date=%s%s%s&paper=AAPL.O&csv_format=csv' 
#             ^^^^^^ 

Эти 3 %s последовательности говорят Python ожидать 3 значения, которые будут вставлены там.

Также Вы пытаетесь интерполировать days. Используйте переменную цикла вместо:

url3 % (year, month, day) 
+0

@BhargavRao: и предлагаемое редактирование удалило их снова (возможно, это было связано с изменением). –

+0

И можете ли вы добавить там небольшое уведомление, что форматирование такого рода-off практически не рекомендуется (pep 3101) –

+1

@BhargavRao: официального устаревания нет. 'str.format()' является предпочтительным, но старый формат будет там еще некоторое время. –

Смежные вопросы