2015-08-03 2 views
1

это мой кодпитон требуется целое число заменить

for date in self.getDateRange(): 
      date = date.replace('-','/') 

и это функция getDateRange:

def getDateRange(self): 
    from datetime import date, datetime, timedelta 
    return self.perdelta(date(2000, 01, 01), date(2015, 8, 03), timedelta(days=1)) 

def perdelta(self, start, end, delta): 
    curr = start 
    while curr < end: 
     yield curr 
     curr += delta 

и это сообщение об ошибке

MySpider.py", line 19, in parse 
      date = date.replace('-','/') 
     exceptions.TypeError: an integer is required 

это странно, я всегда умею заменять без проблем, я не знаю, почему здесь

ответ

4

Вы работать на реальных объектах, которые datehave their own replace() method:

date.replace(year, month, day) 

Вернуться Свидание с тем же значением, для тех параметров, заданных новых значений по зависимости ключевого слова указаны аргументы, за исключением. Например, если d == date (2002, 12, 31), то d.replace (day = 26) == date (2002, 12, 26).

Эти методы принимают только целые числа. Если вы хотите работать с датами как строки, вам нужно их преобразовать. Но поскольку у вас уже есть объекты, вы можете просто форматировать их с помощью косой черты в качестве разделителя, используя strftime().

+0

я не нужен вариант даты, мне нужно строку даты в этом формате '04/08/2015' –

+0

не могли бы вы дать мне пример, пожалуйста, –

+0

Тогда вы можете просто сделать 'yield curr.strftime ('% m /% d /% Y')' в функции 'perdelta()' (если вам нужен формат обновления). – Anonymous

0

Объекты в вашем списке не являются строками. Они являются объектами datetime (https://docs.python.org/2/library/datetime.html).

Вы должны использовать date.strftime для вывода своей даты в любом формате, который вам нужен. Для полного форматирования см. https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior.

Например, вы можете захотеть date.strftime ('% м /% d /% Y')

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