Hướng dẫn how do i extract a year from a string in python? - làm cách nào để trích xuất một năm từ một chuỗi trong python?

Làm thế nào tôi có thể phân tích cú pháp. Trong Python để trích xuất năm:

'years since 1250-01-01 0:0:0'

Câu trả lời phải là 1250

KAME

Phù hiệu vàng 19.7k30 Huy hiệu bạc150 Huy hiệu đồng30 gold badges101 silver badges150 bronze badges

Hỏi ngày 19 tháng 10 năm 2016 lúc 3:54Oct 19, 2016 at 3:54

user308827user308827user308827

18.6K79 Huy hiệu vàng238 Huy hiệu bạc389 Huy hiệu đồng79 gold badges238 silver badges389 bronze badges

Có tất cả các loại cách để làm điều đó, đây là một số tùy chọn:

  • In [1]: s = 'years since 1250-01-01 0:0:0'
    
    In [2]: from dateutil.parser import parse
    
    In [3]: parse[s, fuzzy=True].year  # resulting year would be an integer
    Out[3]: 1250
    
    1 trình phân tích cú pháp trong chế độ "mờ":

    In [1]: s = 'years since 1250-01-01 0:0:0'
    
    In [2]: from dateutil.parser import parse
    
    In [3]: parse[s, fuzzy=True].year  # resulting year would be an integer
    Out[3]: 1250
    
  • Biểu thức thường xuyên với một nhóm bắt giữ:

    In [2]: import re
    
    In [3]: re.search[r"years since [\d{4}]", s].group[1]
    Out[3]: '1250'
    
  • chia tách bởi "kể từ" và sau đó bằng một dấu gạch ngang:

    In [2]: s.split["since", 1][1].split["-", 1][0].strip[]
    Out[2]: '1250'
    
  • hoặc thậm chí có thể bị chia tách bởi dấu gạch ngang đầu tiên và cắt phần đầu tiên:

    In [2]: s.split["-", 1][0][-4:]
    Out[2]: '1250'
    

Hai phần cuối liên quan đến nhiều "bộ phận chuyển động" hơn và có thể không được áp dụng tùy thuộc vào các biến thể có thể của chuỗi đầu vào.

Đã trả lời ngày 19 tháng 10 năm 2016 lúc 3:59Oct 19, 2016 at 3:59

Alecxealecxealecxe

449K114 Huy hiệu vàng1043 Huy hiệu bạc1167 Huy hiệu đồng114 gold badges1043 silver badges1167 bronze badges

2

Bạn có thể sử dụng một regex với một nhóm chụp xung quanh bốn chữ số, đồng thời đảm bảo bạn có một mẫu cụ thể xung quanh nó. Tôi có lẽ sẽ tìm kiếm một cái gì đó mà:

  • 4 chữ số và chụp

    In [1]: s = 'years since 1250-01-01 0:0:0'
    
    In [2]: from dateutil.parser import parse
    
    In [3]: parse[s, fuzzy=True].year  # resulting year would be an integer
    Out[3]: 1250
    
    2

  • Bạch cầu

    In [1]: s = 'years since 1250-01-01 0:0:0'
    
    In [2]: from dateutil.parser import parse
    
    In [3]: parse[s, fuzzy=True].year  # resulting year would be an integer
    Out[3]: 1250
    
    3

  • Hai chữ số

    In [1]: s = 'years since 1250-01-01 0:0:0'
    
    In [2]: from dateutil.parser import parse
    
    In [3]: parse[s, fuzzy=True].year  # resulting year would be an integer
    Out[3]: 1250
    
    4

  • Bạch cầu

    In [1]: s = 'years since 1250-01-01 0:0:0'
    
    In [2]: from dateutil.parser import parse
    
    In [3]: parse[s, fuzzy=True].year  # resulting year would be an integer
    Out[3]: 1250
    
    3

  • Hai chữ số

    In [1]: s = 'years since 1250-01-01 0:0:0'
    
    In [2]: from dateutil.parser import parse
    
    In [3]: parse[s, fuzzy=True].year  # resulting year would be an integer
    Out[3]: 1250
    
    4

Cho đi:

In [1]: s = 'years since 1250-01-01 0:0:0'

In [2]: from dateutil.parser import parse

In [3]: parse[s, fuzzy=True].year  # resulting year would be an integer
Out[3]: 1250
7

Demo:

>>> import re
>>> d = re.findall['[\d{4}]-\d{2}-\d{2}', 'years since 1250-01-01 0:0:0']
>>> d
['1250']
>>> d[0]
'1250'

Nếu bạn cần nó như một INT, chỉ cần đúc nó như vậy:

>>> int[d[0]]
1250

Đã trả lời ngày 19 tháng 10 năm 2016 lúc 3:59Oct 19, 2016 at 3:59

1

Alecxealecxe

^.*\[d{4}]-\d{2}-\d{2}.*$

449K114 Huy hiệu vàng1043 Huy hiệu bạc1167 Huy hiệu đồngOct 19, 2016 at 4:00

Bạn có thể sử dụng một regex với một nhóm chụp xung quanh bốn chữ số, đồng thời đảm bảo bạn có một mẫu cụ thể xung quanh nó. Tôi có lẽ sẽ tìm kiếm một cái gì đó mà:Tim Biegeleisen

4 chữ số và chụp

In [1]: s = 'years since 1250-01-01 0:0:0'

In [2]: from dateutil.parser import parse

In [3]: parse[s, fuzzy=True].year  # resulting year would be an integer
Out[3]: 1250
224 gold badges254 silver badges331 bronze badges

Xem thảo luận

Cải thiện bài viết

Lưu bài viết

  • Đọc
  • Bàn luận
  • Xem thảo luận

    Cải thiện bài viết

    Lưu bài viết

    Đọc

    Input : test_str = "gfg at 2021-01-04"
    Output : 2021-01-04
    Explanation : Date format string found.
    
    Input : test_str = "2021-01-04 for gfg"
    Output : 2021-01-04
    Explanation : Date format string found.

    Bàn luậnre.search[] + strptime[] methods

    Đưa ra một chuỗi, nhiệm vụ là viết một chương trình Python để trích xuất ngày từ nó.

    Python3

    Phương pháp số 1: Sử dụng phương thức re.search [] + strptime []

    Trong đó, nhóm tìm kiếm cho một ngày cụ thể được đưa vào tìm kiếm [] và strptime [] được sử dụng để cung cấp theo định dạng để tìm kiếm.

    In [2]: import re
    
    In [3]: re.search[r"years since [\d{4}]", s].group[1]
    Out[3]: '1250'
    
    4
    In [2]: import re
    
    In [3]: re.search[r"years since [\d{4}]", s].group[1]
    Out[3]: '1250'
    
    5
    In [2]: import re
    
    In [3]: re.search[r"years since [\d{4}]", s].group[1]
    Out[3]: '1250'
    
    6

    In [2]: import re
    
    In [3]: re.search[r"years since [\d{4}]", s].group[1]
    Out[3]: '1250'
    
    7
    In [2]: import re
    
    In [3]: re.search[r"years since [\d{4}]", s].group[1]
    Out[3]: '1250'
    
    8
    In [2]: import re
    
    In [3]: re.search[r"years since [\d{4}]", s].group[1]
    Out[3]: '1250'
    
    9
    In [2]: s.split["since", 1][1].split["-", 1][0].strip[]
    Out[2]: '1250'
    
    0
    In [2]: s.split["since", 1][1].split["-", 1][0].strip[]
    Out[2]: '1250'
    
    1
    In [2]: s.split["since", 1][1].split["-", 1][0].strip[]
    Out[2]: '1250'
    
    2

    In [1]: s = 'years since 1250-01-01 0:0:0'
    
    In [2]: from dateutil.parser import parse
    
    In [3]: parse[s, fuzzy=True].year  # resulting year would be an integer
    Out[3]: 1250
    
    8
    In [1]: s = 'years since 1250-01-01 0:0:0'
    
    In [2]: from dateutil.parser import parse
    
    In [3]: parse[s, fuzzy=True].year  # resulting year would be an integer
    Out[3]: 1250
    
    9

    In [2]: import re
    
    In [3]: re.search[r"years since [\d{4}]", s].group[1]
    Out[3]: '1250'
    
    0
    In [2]: import re
    
    In [3]: re.search[r"years since [\d{4}]", s].group[1]
    Out[3]: '1250'
    
    1
    In [1]: s = 'years since 1250-01-01 0:0:0'
    
    In [2]: from dateutil.parser import parse
    
    In [3]: parse[s, fuzzy=True].year  # resulting year would be an integer
    Out[3]: 1250
    
    8
    In [2]: import re
    
    In [3]: re.search[r"years since [\d{4}]", s].group[1]
    Out[3]: '1250'
    
    3

    In [2]: s.split["since", 1][1].split["-", 1][0].strip[]
    Out[2]: '1250'
    
    3
    In [2]: import re
    
    In [3]: re.search[r"years since [\d{4}]", s].group[1]
    Out[3]: '1250'
    
    5
    In [2]: s.split["since", 1][1].split["-", 1][0].strip[]
    Out[2]: '1250'
    
    5
    In [2]: s.split["since", 1][1].split["-", 1][0].strip[]
    Out[2]: '1250'
    
    6
    In [2]: s.split["since", 1][1].split["-", 1][0].strip[]
    Out[2]: '1250'
    
    7

    Output:

    The original string is : gfg at 2021-01-04
    Computed date : 2021-01-04

    In [2]: s.split["since", 1][1].split["-", 1][0].strip[]
    Out[2]: '1250'
    
    8
    In [2]: import re
    
    In [3]: re.search[r"years since [\d{4}]", s].group[1]
    Out[3]: '1250'
    
    5
    In [2]: s.split["-", 1][0][-4:]
    Out[2]: '1250'
    
    0
    In [2]: s.split["-", 1][0][-4:]
    Out[2]: '1250'
    
    1
    In [2]: s.split["-", 1][0][-4:]
    Out[2]: '1250'
    
    2
    python-dateutil[] module

    Đây là một cách khác để giải quyết vấn đề này. Trong thư viện Python Python sẵn có này, phương thức parse [] có thể được sử dụng để phát hiện ngày và thời gian trong một chuỗi. & Nbsp;

    Python3

    In [2]: import re
    
    In [3]: re.search[r"years since [\d{4}]", s].group[1]
    Out[3]: '1250'
    
    0
    >>> import re
    >>> d = re.findall['[\d{4}]-\d{2}-\d{2}', 'years since 1250-01-01 0:0:0']
    >>> d
    ['1250']
    >>> d[0]
    '1250'
    
    0
    In [1]: s = 'years since 1250-01-01 0:0:0'
    
    In [2]: from dateutil.parser import parse
    
    In [3]: parse[s, fuzzy=True].year  # resulting year would be an integer
    Out[3]: 1250
    
    8
    >>> import re
    >>> d = re.findall['[\d{4}]-\d{2}-\d{2}', 'years since 1250-01-01 0:0:0']
    >>> d
    ['1250']
    >>> d[0]
    '1250'
    
    2

    In [2]: import re
    
    In [3]: re.search[r"years since [\d{4}]", s].group[1]
    Out[3]: '1250'
    
    4
    In [2]: import re
    
    In [3]: re.search[r"years since [\d{4}]", s].group[1]
    Out[3]: '1250'
    
    5
    In [2]: import re
    
    In [3]: re.search[r"years since [\d{4}]", s].group[1]
    Out[3]: '1250'
    
    6

    In [2]: import re
    
    In [3]: re.search[r"years since [\d{4}]", s].group[1]
    Out[3]: '1250'
    
    7
    In [2]: import re
    
    In [3]: re.search[r"years since [\d{4}]", s].group[1]
    Out[3]: '1250'
    
    8
    In [2]: import re
    
    In [3]: re.search[r"years since [\d{4}]", s].group[1]
    Out[3]: '1250'
    
    9
    In [2]: s.split["since", 1][1].split["-", 1][0].strip[]
    Out[2]: '1250'
    
    0
    In [2]: s.split["since", 1][1].split["-", 1][0].strip[]
    Out[2]: '1250'
    
    1
    In [2]: s.split["since", 1][1].split["-", 1][0].strip[]
    Out[2]: '1250'
    
    2

    In [2]: s.split["since", 1][1].split["-", 1][0].strip[]
    Out[2]: '1250'
    
    8
    In [2]: import re
    
    In [3]: re.search[r"years since [\d{4}]", s].group[1]
    Out[3]: '1250'
    
    5
    >>> int[d[0]]
    1250
    
    4
    In [2]: import re
    
    In [3]: re.search[r"years since [\d{4}]", s].group[1]
    Out[3]: '1250'
    
    5
    >>> int[d[0]]
    1250
    
    6
    >>> int[d[0]]
    1250
    
    7

    In [2]: import re
    
    In [3]: re.search[r"years since [\d{4}]", s].group[1]
    Out[3]: '1250'
    
    7
    In [2]: import re
    
    In [3]: re.search[r"years since [\d{4}]", s].group[1]
    Out[3]: '1250'
    
    8
    In [2]: s.split["-", 1][0][-4:]
    Out[2]: '1250'
    
    5
    In [2]: s.split["since", 1][1].split["-", 1][0].strip[]
    Out[2]: '1250'
    
    0
    In [2]: s.split["since", 1][1].split["-", 1][0].strip[]
    Out[2]: '1250'
    
    1
    ^.*\[d{4}]-\d{2}-\d{2}.*$
    
    3
    ^.*\[d{4}]-\d{2}-\d{2}.*$
    
    4
    ^.*\[d{4}]-\d{2}-\d{2}.*$
    
    5

    Output:

    The original string is : gfg at 2021-01-04
    Computed date : 2021-01-04

    Làm thế nào để tôi trích xuất chỉ một năm từ một chuỗi trong Python?

    Làm thế nào để trích xuất năm kể từ ngày trong Python..
    df ['ngày'] = pd. to_dateTime [df ['date'], định dạng = '%y%m%d'].
    df ['năm'] = pd. DatetimeIndex [df ['date']]. năm..
    df ['tháng'] = pd. DatetimeIndex [df ['date']]. tháng..

    Làm thế nào để bạn trích xuất tháng và năm từ một chuỗi trong Python?

    Trích xuất ngày tháng và năm từ một chuỗi trong câu trả lời mã Python..
    Nhập Datetime ..
    ngày = '2021-05-21 11:22:03'.
    datem = dateTime.ngày giờ.Strptime [ngày, "%y-%m-%d%h:%m:%s"].
    In [Datem. Ngày] # 25 ..
    In [Datem. Tháng] # 5 ..
    In [Datem. Năm] # 2021 ..
    In [Datem. Giờ] # 11 ..
    In [Datem. Phút] # 22 ..

    Làm thế nào để bạn phân tích năm trong Python?

    Hàm srfttime [] trong python là một phương pháp khác để có được năm hiện tại.Hàm strftime [] lấy một chuỗi chỉ định định dạng ngày làm đối số.Nó trả về ngày đã cho dưới dạng một chuỗi trong định dạng được cung cấp.Chúng tôi sẽ chuyển "% y" cho strftime [] để có được năm của đối tượng ngày.strfttime[] function in Python is another method for obtaining the current year. The function strftime[] takes a string specifying the date format as the argument. It returns the given date as a string in the provided format. We will pass "% Y" to strftime[] to get the year of the date object.

    Làm thế nào để bạn trích xuất ngày từ một chuỗi trong Python?

    Trong thư viện Python Python sẵn có này, phương thức parse [] có thể được sử dụng để phát hiện ngày và thời gian trong một chuỗi.parse[] method can be used to detect date and time in a string.

    Bài Viết Liên Quan

    Chủ Đề