簡體   English   中英

正則表達式在 Python 中的日期之后提取字符串

[英]Regex to extract a string after a date in Python

有這兩種類型的字符串:

1625212673449-2021_07_02_07_55_05_111040_0CM.csv.zip

1635508858063-1625212673449-2021_07_02_07_55_05_111040_0CM.csv.zip

如何使用正則表達式字符串的111040部分? 它總是 6 位數字。

我的方法是:“在 YYYY_MM_DD_HH_MM_SS_ 部分后取 6 位代碼”,但也歡迎任何其他方法。

編輯:最后一部分_0CM.csv.zip可以更改。

提前致謝。

你想要一個正則表達式,所以這里是:

[0-9]{4}(?:_[0-9]{2}){5}_([0-9]{6})
  • [0-9]{4} : 匹配年份的前 4 位數字,這是我們的起始錨點
  • (?:_[0-9]{2}){5} : 之后,后面跟着 5 個兩位數(月、日、小時、分鍾、秒),因此我們可以將它們全部分組並忽略它們
  • ([0-9]{6}) :獲取前一個表達式后面的 6 位數字。

所需的數字在此正則表達式的捕獲組 1 中:

import re
regex = '[0-9]{4}(?:_[0-9]{2}){5}_([0-9]{6})'
re.search(regex, '1625212673449-2021_07_02_07_55_05_111040_0CM.csv.zip').group(1)

這個圖案怎么樣? 如果您逐行匹配每一行,則有效:

import re
pattern = re.compile('\d{4}_\d{2}_\d{2}_\d{2}_\d{2}_\d{2}_(\d{6})')
print(pattern.findall("1625212673449-2021_07_02_07_55_05_111040_0CM.csv.zip"))

如果找不到合適的匹配項,這將返回 ''。

import re

strings = [
    "1625212673449-2021_07_02_07_55_05_111040_0CM.csv.zip",
    "1635508858063-1625212673449-2021_07_02_07_55_05_111040_0CM.csv.zip",
    'Test'
]

pattern = re.compile('_(\d{6})_')

digits = [pattern.search(string).group(1) if pattern.search(string) else '' for string in strings]

print(digits)

暫無
暫無

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

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