2016-07-31 3 views
3

서버의 두 날짜를 모든 데이터 행의 파이썬과 비교해야합니다. 이 경우에는 datetime을 사용했으나 일부 ​​제한으로 인해 큰 데이터에서 많은 시간을 소비합니다.두 날짜를 문자열로 비교하기

first_date = datetime.strptime(line_content[3], '%Y-%m-%dT%H:%M:%S.000000Z') 
second_date = datetime.strptime(line_content[4].strip(), '%Y-%m-%dT%H:%M:%S.000000Z') 

내가 그들의 문자열로 날짜를 비교할와 내가 그렇게 시간 비용 절감을 많이있을 것입니다 할 경우, datetime를 사용하지 않는 : 나는 datetime 객체를 생성 및 추가에 사용하는 코드 아래 사용 이런 종류의 데이터. 그래서 이것에 관해서는 아래의 테스트를 파이썬으로 사용하십시오 :

>>> "2016-07-28T06:04:12.000000Z" < "2016-04-28T06:04:13.000000Z" 
False 
>>> "2016-07-28T06:04:12.000000Z" < "2016-07-28T06:04:13.000000Z" 
True 
>>> 
>>> "2016-07-28T06:04:12.000000Z" < "2016-07-28T06:04:11.000000Z" 
False 
>>> "2016-07-28T06:04:12.000000Z" < "2016-07-28T06:04:12.000000Z" 
False 
>>> "2016-07-28T06:04:12.000000Z" < "2016-07-28T07:04:12.000000Z" 
True 
>>> "2016-07-28T06:04:12.000000Z" < "2016-07-28T06:04:12.000000Z" 
False 
>>> 
>>> "2016-07-28T06:04:12.000000Z" < "2016-07-26T06:04:12.000000Z" 
False 
>>> "2016-07-28T06:04:12.000000Z" < "2016-07-29T06:04:12.000000Z" 
True 
>>> "2016-07-28T06:04:12.000000Z" < "2016-07-28T06:04:12.000000Z" 
False 
>>> 

이것은 날짜를 비교하는 좋은 방법입니까? 이 코드가 작동하지 않는다는 것을 보여주는 예를 보여줄 수 있습니까?

+2

좋은 방법도 아닙니다. 파이썬은 문자열을 사전 적으로 비교합니다. 'datetime' 객체를 생성하는 것은 성능 병목이되어서는 안됩니다. 이것이 문제의 원인이라고 확신합니까? – DeepSpace

+0

@DeepSpace 날짜가 모두 같은 형식으로되어있는 경우 동일하지 않습니까? – Julien

+0

@DeepSpace : 명백한 작동하지 않는 예제에는 제로 패딩이 없습니다. 'strptime'이 그렇게 할 때 당신은 지적 할 수 있습니까? – usr2564301

답변

3

예 - 날짜와 시간이 complex things이기 때문에 파이썬으로 날짜를 파싱하는 것이 매우 느립니다. this stackoverflow 스레드에 따르면 정규식은 구문 분석에 더 빠를 수 있습니다.

데이터가 깨끗하고 동일한 형식을 가지고 있기 때문에 실제로 문자열을 구문 분석해야한다면 다시 생각해 볼 수 있습니다. 이 방법으로 진행하기 전에 염두에 두어야

것들 :

  • 당신은 당신의 문자열의 형식을 알고 계십니까?
  • 실제로는 1 년> 월> 일> 시간> 분> 초> 등
  • 모든 데이터의 형식이 동일합니까?
  • 모든 데이터가 동일한 시간대에 있습니까?
관련 문제