簡體   English   中英

如何在 python 中使用正則表達式從字符串中提取一些字符

[英]How to extract some characters from string using regex in python

有一個學生作業文件,其文件命名模式如下:

160608726_Task Basic Programming_02_02.pdf
200610612_Task PTI_12_01.xls
180609074_Task Industrial Automation 1_04_04.doc

我想確定文件的學生證號所有者、學生的批次、課程名稱、星期幾和文件擴展名。

學生批次是從前 2 個數字中獲得的(例如:20,那么年份是 2020,如果是 18,那么年份是 2018)

Output 程序200610612_Task PTI_12_01.xls文件名:

此作業屬於學生 ID 號200610612的學生。
這些學生是2020的一批。
主題是PTI
此作業為第12
課程在1學期舉行
此文件擴展名為xls

我嘗試了幾種語法,最后一種語法是

txt = "200610612_Tugas PTI_12_01.xls"
x = re.findall (r"\d{2}", 'txt')
print (x)

但 output 是[]

我建議

^(?P<StudentIDNumber>(?P<batch>\d{2})\d*)_Task\s+(?P<Subject>[^_]+)_(?P<week>\d+)_(?P<Semester>\d+)\.(?P<Extension>\w+)$

請參閱正則表達式演示 詳情

  • ^ - 字符串的開頭
  • (?P<StudentIDNumber>(?P<batch>\d{2})\d*) - 組“StudentIDNumber”:兩個或多個數字,組“batch”捕獲前兩個數字
  • _Task - 文字字符串(如果字符串未知,請使用\w+
  • \s+ - 一個或多個空格
  • (?P<Subject>[^_]+) - 組“主題”:除_之外的一個或多個字符
  • _ - 一個_字符
  • (?P<week>\d+) - 組“周”:一位或多位數字
  • _ - 一個_字符
  • (?P<Semester>\d+) - 組“學期”:一位或多位數字
  • \. - 一個點
  • (?P<Extension>\w+) - 組“擴展”:一個或多個單詞字符
  • $ - 字符串結束。

請參閱Python 演示

import re
rx = re.compile(r'^(?P<StudentIDNumber>(?P<batch>\d{2})\d*)_Task\s+(?P<Subject>[^_]+)_(?P<week>\d+)_(?P<Semester>\d+)\.(?P<Extension>\w+)$')
files = ['160608726_Task Basic Programming_02_02.pdf',
'200610612_Task PTI_12_01.xls',
'180609074_Task Industrial Automation 1_04_04.doc']
for fn in files:
    print(f"Parsing {fn}")
    res = rx.match(fn)
    if res:
        resdict = res.groupdict()
        resdict["batch"] = f"20{resdict['batch']}"
        print(resdict)

Output:

Parsing 160608726_Task Basic Programming_02_02.pdf
{'StudentIDNumber': '160608726', 'batch': '2016', 'Subject': 'Basic Programming', 'week': '02', 'Semester': '02', 'Extension': 'pdf'}
Parsing 200610612_Task PTI_12_01.xls
{'StudentIDNumber': '200610612', 'batch': '2020', 'Subject': 'PTI', 'week': '12', 'Semester': '01', 'Extension': 'xls'}
Parsing 180609074_Task Industrial Automation 1_04_04.doc
{'StudentIDNumber': '180609074', 'batch': '2018', 'Subject': 'Industrial Automation 1', 'week': '04', 'Semester': '04', 'Extension': 'doc'}

暫無
暫無

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

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