2017-12-04 7 views
0

아래에 표시된 Python 코드는 1900 년 이전의 날짜를 검색하지 않습니다. datetime.strptime()이라는 제한 사항을 알게되었습니다.파이썬 패치를 설치하여 Pycharm에서 1900 년 이전 날짜 검색

나는 비슷한 게시물 인 Is there any way to use a strftime-like function for dates before 1900 in Python?에 언급 된 해결 방법을 따르려고했지만 조금 복잡해 보입니다. 또한이 문제를 해결할 수있는 패치가 있음을 알게되었습니다. https://bugs.python.org/file10253/strftime-pre-1900.patch

패치를 텍스트 파일로 복사하여 Pycharm에 설치하려고 시도했지만 다음 오류 메시지가 나타납니다. 1900 년 이전에 패치를 성공적으로 실행하기 위해해야 ​​할 일에 대한 아이디어가 있습니까?

Pycharm Patch Error Screenshot

내 코드 :

from datetime import datetime 

import csv 

with open('train.csv', 'r') as f_input, open('sample.txt', 'w') as f_output: 
csv_input = csv.reader(f_input) 
csv_output = csv.writer(f_output) 

for row in csv_input: 
    for date_format in ['%Y']: 
     try: 
      converted = datetime.strptime(row[3], date_format) 
      csv_output.writerow([row[0], row[1], row[2], converted.strftime(date_format)]) 
     except ValueError: 
      pass 
+0

오류 메시지 및 기타 결과는 질문 텍스트에 포함되어야합니다. 외부 이미지는 이러한 종류의 질문에 적합하지 않습니다. – jdv

답변

1

난 당신이 무엇을 요구이 아닌 실현,하지만 난 믿고있어 이후 어쨌든 거기 넣어 것 그 경우 연결에 대한 답변 문제가 너무 복잡해서 문제를 성공적으로 해결할 수 없다는 생각은 아마도 비현실적입니다.

당신이보고있는 한계는 Python2에 존재 :

Python 3.5.2 (default, Nov 23 2017, 16:37:01) 
[GCC 5.4.0 20160609] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from datetime import datetime 
>>> d = datetime(1899, 1, 1) 
>>> d.strftime('%Y-%m-%d') 
'1899-01-01' 

구문 분석도 작동합니다 :

>>> d = datetime.strptime('0113-01-01','%Y-%m-%d') 
>>> d 
datetime.datetime(113, 1, 1, 0, 0) 
>>> d.isoformat() 
'0113-01-01T00:00:00' 
>>> d.strftime('%Y-%m-%d') 
'113-01-01' 

그래서이 경우

Python 2.7.12 (default, Nov 20 2017, 18:23:56) 
[GCC 5.4.0 20160609] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from datetime import datetime 
>>> d = datetime(1899, 1, 1) 
>>> d.strftime('%Y-%m-%d') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: year=1899 is before 1900; the datetime strftime() methods require year >= 1900 

그것은 이후 somewhat rectified in Python3.2, and fully rectified in Python3.3하고있다 받아 들일 수있는 옵션이면 Python3.3 +로 전환 할 수 있습니다. 이 문제.

+0

문의 해 주셔서 감사합니다. PyCharm에서 Python 3.6 프로젝트 인터프리터를 사용하고 있습니다. 나는 아래의 패키지를 3.6 인터프리터에 설치했다. numpy, pandas, pip, Regex-Dict, python-dateutil, pytz, setuptools, six. – user8929822

+0

@ user8929822 프로젝트를 실행할 때 3.6 인터프리터를 사용하고 있습니까? 그렇다면 질문에 언급 된 문제를 보지 않아야합니다. – bgse

+0

3.6 통역사를 사용하면 저에게 효과적이었습니다. 나는 이전에 2.7을 사용했다. 감사. – user8929822