2012-01-29 5 views
0

개체를 작은 코드()는 여기

ds = datetime.datetime.now() 
de = ds + datetime.timedelta(days=99) 
fd = list(rrule(DAILY, byweekday=(SA,SU), dtstart=ds, until=de)) 
for x in fd: 
    print fd[x-1] 

그것은 나에게 날짜의 목록을 제공해야한다() 객체에게 있습니다. 그러나 그렇지 않습니다. 여기에 오류 메서드가 있습니다

Traceback (most recent call last): 
    File "<pyshell#23>", line 1, in <module> 
    int(fd[0]) 
TypeError: int() argument must be a string or a number, not 'datetime.datetime' 

무엇이 잘못되었을 수 있습니까?

+2

'루루'란 무엇입니까? – Amber

+1

@Amber : 필자는 그것을 봐야만했다. [python-dateutil'] (http://labix.org/python-dateutil#head-470fa22b2db72000d7abe698a5783a46b0731b57)의 일부인 것처럼 보였다. – Johnsyweb

답변

2

당신은 datetime.datetime 개체에서 int1을 뺄 수 없습니다 : 당신은 다음 중 하나를 수행해야 할 것 같은데.

xfd이라고하는 fd이라는 개체 인 datetime.datetime의 개체이며 인덱스가 아닙니다.

for x in fd: 
    print fd[x-1] 

당신이 원하는 :

for x in fd: 
    print x 

이 당신에게 C의 목록을 줄 것이다 당신이

. (당신이 그것을 실행시기에 따라 자연적으로) 29 개 항목 :

2012-01-29 19:47:23 
2012-02-04 19:47:23 
2012-02-05 19:47:23 
2012-02-11 19:47:23 
2012-02-12 19:47:23 
[...] 
2012-04-22 19:47:23 
2012-04-28 19:47:23 
2012-04-29 19:47:23 
2012-05-05 19:47:23 
2012-05-06 19:47:23 
+0

감사합니다. 도움이되었습니다. 그러나 나는 내 문제를 다른 방법으로 해결했다. 여기 내가 한 일이있다. 'x에 대한 범위 (0, len (fd (x)) :'..'print fd (x)'.. 그리고 그것은 내가 원한 것을 내게 주었다 도움을 주셔서 감사합니다 – debuggerpk

+0

@mouse :'for x in range (0, len (fd)) :'Pythonic이 아니며'print fd (x)'가 유효하지 않습니다. 내 대답에 무엇을 넣었습니까? – Johnsyweb

+0

죄송합니다 .. 그것은 fd [x]였습니다. 당신의 솔루션을 잘못했다. 내가 여러 배열을 다루고 있었기 때문에 정수가 x가 필요했습니다. – debuggerpk

1

fddatetime 개체 목록입니다. for x in fdfd의 모든 개체를 제공하며 fd의 인덱스는 제공하지 않습니다.

for x in fd: 
    print x # not fd[x - 1] 

또는

for x in range(len(fd)): 
    print fd[x] 
1
  • fddatetime 개체의 목록입니다.
  • fd[0]datetime 개체입니다.
  • int(fd[0])가 올리는 당신이 날짜 개체에 int을 적용 할 수 없기 때문에

    TypeError: int() argument must be a string or a number, not 'datetime.datetime' 
    

    ; 오류가 말한대로, int

  • fd[x] 자체가 datetime 객체 인

    TypeError: list indices must be integers, not datetime.datetime 
    

    x부터 제기하고 목록 fd에 대한 유효한 인덱스가 아닙니다 str 또는 intsints에 변환합니다. x는 날짜 개체이며, 당신이 날짜 개체에서 int를 뺄 수 없기 때문에

  • fd[x-1]

    TypeError: unsupported operand type(s) for -: 'datetime.datetime' and 'int' 
    

    발생합니다.

인쇄하려고하는 것이 무엇인지 설명하는 경우 해당 코드가 어떤 코드를 생성하는지 제안 할 수 있습니다.

+0

이것은 내 문제를 해결하기 위해'of range (0, len (fd) :'..)에 쓰여진 것입니다. 저는이 특정 날짜 사이의 토요일과 일요일에 해당하는 날짜 목록을 인쇄하려고했습니다. – debuggerpk