Python 2.7을 사용하고 있습니다.
날짜 필드가있는 Adobe PDF 양식 문서가 있습니다. pdfminer 함수를 사용하여 값을 추출합니다. 내가 해결해야 할 문제는 Adobe Acrobat Reader의 사용자가 april 3rd 2017
또는 3rd April 2017
또는 Apr 3rd 2017
또는 같은 문자열을 입력 할 수 있다는 04/04/2017
것 4 3 2017
입니다. 이제 Adobe의 날짜 필드가 mm/dd/yyyy
형식으로 설정 되었으므로 사용자가 위의 값 중 하나를 입력하면 pdfminer가 가져 오는 실제 값이되지만 Adobe는이 값을로 표시 04/03/2017
하지만 필드를 클릭하면 위와 같은 실제 가치. Adobe는 이것을 허용하고 변환 중 mm/dd/yyyy
입니다. 날짜를 . 더 많은 제어를 위해 adobe와 함께 javascript를 사용할 수있는 기능이 있지만 사용자가 함께 제공되는 javascript 파일 없이는 pdf 형식 만 가지고 사용할 수 있습니다.
그래서 나는 datetime
파이썬에서 문자열에서 위의 예제와 같은 서면 날짜를 받아 진정한 mm/dd/yyyy
형식 으로 변환 할 수있는 방법을 찾고 있었다 ??? 길고 짧은 월 이름을 변환하는 방법을 보았지만 1st, 2nd, 3rd, 4th와 같은 날짜 이름을 처리하는 방법은 없었습니다.
가능한 각 형식을 차례로 시도 할 수 있습니다. 먼저 st
nd
rd
테스트를 더 쉽게하기 위해 지정자를 제거하십시오 .
from datetime import datetime
formats = ["%B %d %Y", "%d %B %Y", "%b %d %Y", "%m/%d/%Y", "%m %d %Y"]
dates = ["april 3rd 2017", "3rd April 2017", "Apr 3rd 2017", "04/04/2017", "4 3 2017"]
for date in dates:
date = date.lower().replace("rd", "").replace("nd", "").replace("st", "")
for format in formats:
try:
print datetime.strptime(date, format).strftime("%m/%d/%Y")
except ValueError:
pass
다음과 같이 표시됩니다.
04/03/2017
04/03/2017
04/03/2017
04/04/2017
04/03/2017
이 접근 방식은 각 날짜를 확인하는 이점이 있습니다. 예를 들어, 12보다 큰 달. 허용되는 모든 형식에 실패한 모든 날짜에 플래그를 지정할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다