Làm cách nào để tôi chỉ trích xuất ngày từ một chuỗi trong python?

Trong hướng dẫn này, chúng ta sẽ xem xét các cách khác nhau để bạn có thể trích xuất một ngày từ một. txt bằng lập trình Python. Python là một ngôn ngữ linh hoạt—như bạn sẽ khám phá ra—và có nhiều giải pháp cho vấn đề này

Đầu tiên, chúng ta sẽ xem xét việc sử dụng các mẫu biểu thức chính quy để tìm kiếm các tệp văn bản cho các ngày phù hợp với định dạng được xác định trước. Chúng ta sẽ tìm hiểu về cách sử dụng thư viện lại và tạo các tìm kiếm biểu thức chính quy của riêng mình.

Chúng ta cũng sẽ kiểm tra các đối tượng ngày giờ và sử dụng chúng để chuyển đổi chuỗi thành mô hình dữ liệu. Cuối cùng, chúng ta sẽ xem cách mô-đun datefinder đơn giản hóa quy trình tìm kiếm tệp văn bản cho các ngày chưa được định dạng, giống như chúng ta có thể tìm thấy trong nội dung ngôn ngữ tự nhiên.

Trích xuất một ngày từ một. txt sử dụng Biểu thức chính quy

Ngày được viết ở nhiều định dạng khác nhau. Đôi khi người ta viết tháng/ngày/năm. Các ngày khác có thể bao gồm thời gian trong ngày hoặc ngày trong tuần [Thứ Tư, ngày 8 tháng 7 năm 2021 8. 00PM]

Cách định dạng ngày tháng là một yếu tố cần xem xét trước khi chúng tôi bắt đầu trích xuất chúng từ tệp văn bản.  

Chẳng hạn, nếu một ngày theo định dạng tháng/ngày/năm, chúng ta có thể tìm thấy nó bằng cách sử dụng mẫu biểu thức chính quy. Với biểu thức chính quy hoặc viết tắt là regex, chúng ta có thể tìm kiếm một văn bản bằng cách khớp một chuỗi với một mẫu được xác định trước.  

Vẻ đẹp của biểu thức chính quy là chúng ta có thể sử dụng các ký tự đặc biệt để tạo các mẫu tìm kiếm mạnh mẽ. Chẳng hạn, chúng ta có thể tạo một mẫu sẽ tìm thấy tất cả các ngày được định dạng trong phần văn bản sau

phút. txt
14/10/2021 – Họp với khách hàng.
01/07/2021 – Thảo luận về các chiến lược tiếp thị.
23/12/2021 – Phỏng vấn trưởng nhóm mới.
28/01/2018 – Thay đổi nhà cung cấp tên miền.
11/06/2017 – Thảo luận về việc chuyển đến văn phòng mới.

Thí dụ. Tìm ngày được định dạng với regex

import re

# open the text file and read the data
file = open["minutes.txt",'r']

text = file.read[]
# match a regex pattern for formatted dates
matches = re.findall[r'[\d+/\d+/\d+]',text]

print[matches]

đầu ra

[’14/10/2021′, ’01/07/2021′, ’23/12/2021′, ’28/01/2018′, ’11/06/2017′]

Mẫu biểu thức chính quy ở đây sử dụng các ký tự đặc biệt để xác định các chuỗi chúng tôi muốn trích xuất từ ​​​​tệp văn bản. Các ký tự d và + cho regex biết chúng tôi đang tìm kiếm nhiều chữ số trong văn bản

Chúng tôi cũng có thể sử dụng regex để tìm ngày được định dạng theo những cách khác nhau. Bằng cách thay đổi mẫu biểu thức chính quy của mình, chúng tôi có thể tìm thấy các ngày sử dụng dấu gạch chéo lên [\] hoặc dấu gạch ngang [–] làm dấu phân cách

Điều này hoạt động vì regex cho phép các ký tự tùy chọn trong mẫu tìm kiếm. Chúng tôi có thể chỉ định rằng một trong hai ký tự—dấu gạch chéo lên hoặc dấu gạch ngang—là kết quả phù hợp có thể chấp nhận được

apple2. txt
Apple II đầu tiên được bán vào ngày 10-07-1977. Mẫu Apple II
cuối cùng đã ngừng sản xuất vào ngày 15/10/1994.

Thí dụ. Khớp ngày với mẫu biểu thức chính quy

import re

# open a text file
f = open["apple2.txt", 'r']

# extract the file's content
content = f.read[]

# a regular expression pattern to match dates
pattern = "\d{2}[/-]\d{2}[/-]\d{4}"

# find all the strings that match the pattern
dates = re.findall[pattern, content]

for date in dates:
    print[date]

f.close[]

đầu ra

10-7-1977
15-10-1994

Kiểm tra toàn bộ tiềm năng của regex nằm ngoài phạm vi của hướng dẫn này. Hãy thử trải nghiệm với một số ký tự đặc biệt sau để tìm hiểu thêm về cách sử dụng các mẫu biểu thức chính quy để trích xuất ngày—hoặc thông tin khác—từ một. tập tin txt

Ký tự đặc biệt trong Regex

  • \s – Một ký tự khoảng trắng
  • \S – Bất kỳ ký tự nào ngoại trừ ký tự khoảng trắng
  • \d – Bất kỳ chữ số nào từ 0 đến 9
  • \D – Và bất kỳ ký tự nào ngoại trừ một chữ số
  • \w – Bất kỳ từ nào gồm các ký tự hoặc chữ số [a-zA-Z0-9]
  • \W – Bất kỳ ký tự không phải từ nào

Trích xuất một đối tượng Datetime từ một. tệp txt

Trong Python, chúng ta có thể sử dụng thư viện datetime để thao tác ngày và làm việc với thời gian. Thư viện datetime được đóng gói sẵn Python nên không cần cài đặt

Bằng cách sử dụng các đối tượng datetime, chúng tôi có nhiều quyền kiểm soát hơn đối với dữ liệu chuỗi được đọc từ tệp văn bản. Ví dụ: chúng ta có thể sử dụng một đối tượng datetime để lấy một bản sao của ngày và giờ hiện tại trên máy tính của chúng ta

import datetime

now = datetime.datetime.now[]
print[now]

đầu ra

2021-07-04 20:15:49.185380

Trong ví dụ sau, chúng tôi sẽ trích xuất ngày từ một công ty. txt đề cập đến một cuộc họp đã lên lịch. Nhà tuyển dụng của chúng tôi cần chúng tôi quét một nhóm các tài liệu như vậy để biết ngày tháng. Sau đó, chúng tôi dự định thêm thông tin chúng tôi thu thập vào cơ sở dữ liệu SQLite.

Chúng ta sẽ bắt đầu bằng cách xác định một mẫu biểu thức chính quy phù hợp với định dạng ngày của chúng ta. Khi tìm thấy kết quả khớp, chúng tôi sẽ sử dụng nó để tạo đối tượng ngày giờ từ dữ liệu chuỗi.

lịch trình. txt

lịch trình. txt
Dự án bắt đầu vào tháng sau. Denise đã lên lịch họp tại phòng họp ở Embassy Suits vào ngày 10-7-2021.

Thí dụ. Tạo đối tượng datetime từ dữ liệu tệp

import re
from datetime import datetime

# open the data file
file = open["schedule.txt", 'r']
text = file.read[]

match = re.search[r'\d+-\d+-\d{4}', text]
# create a new datetime object from the regex match
date = datetime.strptime[match.group[], '%d-%m-%Y'].date[]
print[f"The date of the meeting is on {date}."]
file.close[]

đầu ra

The date of the meeting is on 2021-07-10.

Trích xuất ngày từ tệp văn bản bằng Mô-đun Datefinder

Mô-đun datefinder của Python có thể định vị ngày tháng trong nội dung văn bản. Sử dụng phương thức find_dates[], có thể tìm kiếm dữ liệu văn bản cho nhiều loại ngày tháng khác nhau. Datefinder sẽ trả về bất kỳ ngày nào nó tìm thấy ở dạng đối tượng datetime.

Không giống như các gói khác mà chúng tôi đã thảo luận trong hướng dẫn này, Python không đi kèm với công cụ tìm ngày tháng. Cách dễ nhất để cài đặt mô-đun datefinder là sử dụng pip từ dấu nhắc lệnh.

pip install datefinder

Khi đã cài đặt datefinder, chúng tôi đã sẵn sàng mở tệp và trích xuất dữ liệu. Đối với ví dụ này, chúng tôi sẽ sử dụng một tài liệu văn bản giới thiệu một dự án hư cấu của công ty. Sử dụng datefinder, chúng tôi sẽ trích xuất từng ngày từ. txt và in các đối tượng datimeobject của chúng

Vui lòng lưu tệp cục bộ và làm theo

project_timeline. txt
TIÊU DỰ ÁN

Tất cả các thành viên trong nhóm phải đọc bản tóm tắt dự án trước
Ngày 4 tháng 1 năm 2021.

Cuộc họp đầu tiên của DỰ ÁN TIÊU bắt đầu vào ngày 15/01/2021

lúc 9 giờ. 00 giờ sáng. Vui lòng tìm thời gian để đọc các liên kết sau đây.
được tạo vào ngày 08-12-2021 lúc 05. 00 giờ chiều

Tệp dự án này có ngày ở nhiều định dạng. Ngày được viết bằng dấu gạch ngang và dấu gạch chéo về phía trước. Tệ hơn nữa, tháng Giêng được viết ra. Làm cách nào chúng ta có thể tìm thấy tất cả những ngày này bằng Python?

Thí dụ. Sử dụng datefinder để trích xuất ngày từ dữ liệu tệp

import datefinder

# open the project schedule
file = open["project_timeline.txt",'r']

content = file.read[]

# datefinder will find the dates for us
matches = list[datefinder.find_dates[content]]

if len[matches] > 0:
    for date in matches:
        print[date]
else:
    print["Found no dates."]

file.close[]

Đầu ra
2021-01-04 00. 00. 00
2021-01-15 09. 00. 00
2021-08-12 17. 00. 00

Như bạn có thể thấy từ đầu ra, datefinder có thể tìm thấy nhiều định dạng ngày tháng trong văn bản. Gói không chỉ có khả năng nhận dạng tên tháng mà còn nhận dạng thời gian trong ngày nếu có trong văn bản

Trong một ví dụ khác, chúng tôi sẽ sử dụng gói datefinder để trích xuất một ngày từ một. txt bao gồm ngày cho chuyến lưu diễn sắp tới của một ca sĩ nổi tiếng

tour_dates. txt
Thứ bảy ngày 25 tháng 7 năm 2021 lúc 07. 00 giờ chiều     Inglewood, CA
Chủ Nhật ngày 26 tháng 7 năm 2021 lúc 7 giờ tối     Inglewood, CA
30/09/2021 7. 30 giờ chiều  Foxborough, MA

Thí dụ. Trích xuất ngày và giờ tham quan từ một. txt với datefinder

________số 8

đầu ra

NGÀY VÀ GIỜ CỦA DU LỊCH
——————–
25-07-2021     19. 00. 00
26-07-2021     19. 00. 00
2021-09-30     19. 30. 00

Như bạn có thể thấy từ các ví dụ, datefinder có thể tìm thấy nhiều loại ngày và giờ khác nhau. Điều này hữu ích nếu ngày bạn đang tìm kiếm không có định dạng nhất định, như trường hợp thường xảy ra trong dữ liệu ngôn ngữ tự nhiên

Bản tóm tắt

Trong bài đăng này, chúng tôi đã đề cập đến một số phương pháp về cách trích xuất ngày hoặc giờ từ một. tập tin txt. Chúng ta đã thấy sức mạnh của biểu thức chính quy để tìm kết quả khớp trong dữ liệu chuỗi và chúng ta đã thấy cách chuyển đổi dữ liệu đó thành đối tượng ngày giờ trong Python.

Cuối cùng, nếu ngày tháng trong tệp văn bản của bạn không có định dạng cụ thể—như trường hợp của hầu hết các tệp có nội dung ngôn ngữ tự nhiên—hãy thử mô-đun công cụ tìm ngày tháng. Với gói Python này, có thể trích xuất ngày và giờ từ một tệp văn bản không được định dạng trước một cách thuận tiện.

bài viết liên quan

Nếu bạn thích hướng dẫn này và mong muốn tìm hiểu thêm về Python—và chúng tôi thực sự hy vọng bạn cũng như vậy—hãy theo dõi các liên kết này để biết thêm các hướng dẫn tuyệt vời từ Python dành cho người mới bắt đầu

  • Cách sử dụng phép nối Python để nối chuỗi
  • Sử dụng Python try catch để giảm thiểu lỗi và ngăn chặn sự cố

Có liên quan

Đào tạo Python được đề xuất

Khóa học. Python 3 cho người mới bắt đầu

Hơn 15 giờ nội dung video với hướng dẫn có hướng dẫn cho người mới bắt đầu. Tìm hiểu cách tạo các ứng dụng trong thế giới thực và nắm vững kiến ​​thức cơ bản

Chủ Đề