簡體   English   中英

如何僅從 python 中的文本文件中獲取日期

[英]How do I get only date from text file in python

我有一個非常大的文本文件,我正在 python 中閱讀它。 我以讀取模式打開文件,在變量中獲取數據。 現在我只想從中約會。 所以我使用 readline() function 閱讀並申請循環並用逗號分割每行結果並獲得索引[0]的結果。 這樣我就得到了日期列表。 但在文本文件中,某些部分如下所示。 因此,在我的 output 中,我也得到了“並且 bitNumber 為 4”、“然后 function si”、“使用 char 變量”。

10/04/2020, 03:05 - ABC: Like if number is 0011 0111
And bitNumber is 4 
Then function si
10/04/2020, 03:08 - ABC: Question 6
Take a char variable, apply a same as number
10/04/2020, 03:08 - ABC: Example If my variable is 0X3C answer should be same

我做些什么來避免在 output 中得到“並且 bitNumber 是 4”、“然后 function si”、“使用 char 變量”並且應該只獲取日期

for row_data in data_collected:
    print(row_data.split(',')[0])

將每個可能的日期傳遞給datetime.strptime 如果它看起來不像日期,則會引發ValueError 假設您所有日期的格式都相同:

from datetime import datetime

dates = []
for row in data:
    date = row.split(',', 1)[0]
    try:
        date = datetime.strptime(date, '%m/%d/%Y')
        dates.append(date)
    except ValueError:
        continue

獎勵:現在您有了datetime.datetime對象,而不僅僅是字符串。

您可以使用正則表達式查找該格式的日期:

import re
....
for row_data in data_collected:
    if  re.match(r'\d\d/\d\d/\d\d\d\d',row_data):
        print(row_data.split(',')[0])

這將以 nn/nn/nnnn 形式捕獲日期(正則表達式中的 \d 表示匹配任何數字)

您可以使用正則表達式來提取數據,如下所示

import re
dates = []
with open('sample.txt','r') as f:
    for l in f.readlines():
        match = re.search(r'\d{2}/\d{2}/\d{4}', l)
        if match is not None:
            dates.append(match.group())

這是最靈活的方式,它適用於任何分隔符。

你的正則表達式"(?P<day>0[1-9]|[12][0-9]|3[01])(?P<delimiter>[- /.])(?P<month>0[1-9]|1[012])\2(?P<year>(?:19|20)\d\d)"假設您的數據在字符串"X"

我們會這樣做。

import re

result_list = re.findall("(?P<day>0[1-9]|[12][0-9]|3[01])(?P<delimiter>[- /.])(?P<month>0[1-9]|1[012])\2(?P<year>(?:19|20)\d\d)", x)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM