Hướng dẫn auto detect date format python - tự động phát hiện python định dạng ngày

95

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Hàm để có được một datetime từ một chuỗi, datetime.strptime(date_string, format) yêu cầu định dạng chuỗi làm đối số thứ hai. Có cách nào để xây dựng một datetime từ một chuỗi mà không biết định dạng chính xác và có Python tốt nhất không?

hỏi ngày 29 tháng 2 năm 2012 lúc 22:27Feb 29, 2012 at 22:27

Hướng dẫn auto detect date format python - tự động phát hiện python định dạng ngày

5

Có thể thoát khỏi một chức năng đơn giản nếu chỉ kiểm tra ngày.

def get_date(s_date):
    date_patterns = ["%d-%m-%Y", "%Y-%m-%d"]

    for pattern in date_patterns:
        try:
            return datetime.datetime.strptime(s_date, pattern).date()
        except:
            pass

    print "Date is not in expected format: %s" %(s_date)
    sys.exit(0)

Đã trả lời ngày 1 tháng 8 năm 2014 lúc 12:48Aug 1, 2014 at 12:48

SandeepsandeepSandeep

27.3k3 Huy hiệu vàng31 Huy hiệu bạc23 Huy hiệu đồng3 gold badges31 silver badges23 bronze badges

1

Quay lại trước khi tôi là một chàng trai Python, tôi là một chàng trai Perl. Một trong những điều mà tôi luôn bỏ lỡ nhưng chưa thấy bất cứ điều gì gần với nó là ngày :: Manip. Mô -đun đó có thể trích xuất một dấu thời gian tốt từ một lần nhấm nháp. Tôi gần như nghi ngờ rằng đó là tác giả đã thỏa thuận với ma quỷ.

Tôi đã chạy qua một vài điều gây đâm vào nó trong Python:

  • Bình thường
  • mxdatetime
  • Mô -đun ngày của Roundup có một số người hâm mộ

Nếu bạn tìm thấy bất cứ điều gì tốt hơn, tôi rất muốn nghe về nó.

Đã trả lời ngày 1 tháng 3 năm 2012 lúc 4:50Mar 1, 2012 at 4:50

Hướng dẫn auto detect date format python - tự động phát hiện python định dạng ngày

SynthesizerPatelSynthesizerPatelsynthesizerpatel

26.7K5 Huy hiệu vàng72 Huy hiệu bạc90 Huy hiệu Đồng5 gold badges72 silver badges90 bronze badges

1

Bạn có thể sử dụng Datefinder, nó sẽ phát hiện tất cả các loại kiểu tự nhiên của ngày.

import datefinder # Module used to find different style of date with time

string_value = " created 01/15/2005 by ACME inc.and associates.January 4th,2017 at 8pm"
matches = datefinder.find_dates(string_value)            
for match in matches:
    print("match found ",match)

Đầu ra

match found  2005-01-15 00:00:00
match found  2017-01-04 20:00:00

Hướng dẫn auto detect date format python - tự động phát hiện python định dạng ngày

Copperfield

7.6613 Huy hiệu vàng18 Huy hiệu bạc28 Huy hiệu đồng3 gold badges18 silver badges28 bronze badges

Đã trả lời ngày 24 tháng 2 năm 2019 lúc 19:36Feb 24, 2019 at 19:36

Hướng dẫn auto detect date format python - tự động phát hiện python định dạng ngày

2

Tồn tại một số dữ liệu với các định dạng chuỗi khác nhau trong văn bản, ví dụ:

  • Tue, ngày 01 tháng 3 năm 2016 21:17:00 +0800
  • 2016/03/01 21:17:00
  • 21:17:00 2016/03/01
  • 01/03/2016 21:17:00

Để lưu hoặc xử lý DateTime, chúng ta nên chuyển đổi thời gian được định dạng khác nhau này sang định dạng. Trong hướng dẫn này, chúng tôi sẽ giới thiệu cho bạn cách làm trong Python.

dateutil.parser

Chúng tôi sẽ sử dụng gói Python DateUtil.parser để phân tích định dạng chuỗi DateTime khác nhau. Đây là một mã ví dụ:dateutil.parser package to parse different datetime string format. Here is an example code:

import dateutil.parser
from datetime import datetime
time_str = ['Tue, 01 Mar 2016 21:17:00 +0800', '2016/03/01 21:17:00', '21:17:00 2016/03/01', '01/03/2016 21:17:00']
for t in time_str:
    d = dateutil.parser.parse(t)
    print(type(d))
    print(d)

Chạy mã này, bạn sẽ nhận được đầu ra này:


2016-03-01 21:17:00+08:00

2016-03-01 21:17:00

2016-03-01 21:17:00

2016-01-03 21:17:00

Chúng ta có thể tìm thấy: DateUtil.parser.parse () phương thức có thể chuyển đổi một chuỗi dữ liệu với các định dạng khác nhau thành đối tượng DateTime.dateutil.parser.parse() method can convert a string datetime with different formats to a datetime object.

Sau đó, chúng ta có thể chuyển đổi đối tượng DataTime này sang định dạng chuỗi khác.

Chúng ta có thể sử dụng DateTime.strftime () để thực hiện nó. Đây là một ví dụ:datetime.strftime() to implement it. Here is an example:

time_str = 'Tue, 01 Mar 2016 21:17:00 +0800'
d = dateutil.parser.parse(time_str)
d = d.strftime("%Y-%m-%d %H:%M:%S")
print(d)

Chạy mã này, chúng tôi sẽ nhận được kết quả này:

2016-03-01 21:17:00

Điều đó có nghĩa là chúng tôi chuyển đổi ‘Tue, ngày 01 tháng 3 năm 2016 21:17:00 +0800, thành phần%y-%m-%d%h:%m:%s.‘Tue, 01 Mar 2016 21:17:00 +0800’ to “%Y-%m-%d %H:%M:%S” format.

Cuối cùng, chúng ta có thể lưu và xử lý DateTime một cách dễ dàng.

Làm thế nào để Python xác định định dạng ngày?

Kiểm tra Python nếu chuỗi là định dạng ngày..
>>> Nhập Datetime ..
>>> xác thực def (Date_Text):.
ngày giờ.ngày giờ.Strptime (date_text, '%y-%m-%d').
ngoại trừ valueError:.
Tăng giá trịerror ("Định dạng dữ liệu không chính xác, nên là yyyy-mm-dd").

Làm cách nào để kiểm tra xem một ngày có tính bằng mm/dd/yyyy trong python?

Phương pháp số 1: Sử dụng Strptime () trong này, hàm, Strptime thường được sử dụng để chuyển đổi ngày chuỗi thành đối tượng DateTime, được sử dụng như khi nó không khớp với định dạng hoặc ngày, tăng giá trị và do đó có thể được sử dụngTính toán hợp lệ.Using strptime() In this, the function, strptime usually used for conversion of string date to datetime object, is used as when it doesn't match the format or date, raises the ValueError, and hence can be used to compute for validity.

Python có nhận ra ngày không?

Một ngày trong Python không phải là một loại dữ liệu của riêng nó, nhưng chúng ta có thể nhập một mô -đun có tên DateTime để hoạt động với ngày là đối tượng ngày.we can import a module named datetime to work with dates as date objects.

Trình phân tích cú pháp ngày là gì?

Date.parse () Phương thức ngày.parse () phân tích lại một chuỗi biểu diễn của một ngày và trả về số mili giây kể từ ngày 1 tháng 1 năm 1970, 00:00:00 UTC hoặc NAN nếu chuỗi không được công nhận hoặc trong một số trường hợp, chứa các giá trị ngày bất hợp pháp (ví dụ: 2015-02-31).