【问题标题】:How to extract some characters from string using regex in python如何在python中使用正则表达式从字符串中提取一些字符
【发布时间】:2021-03-08 16:47:56
【问题描述】:

有一个学生作业文件,其文件命名模式如下:

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)

输出程序200610612_Task PTI_12_01.xls文件名:

此作业属于学生 ID 号为 200610612 的学生。
这些学生是2020 批次。
主题是PTI
此作业适用于12th 周
课程在学期举行1
此文件扩展名为xls

我试过几种语法,最后一个语法是

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

但输出是[]

【问题讨论】:

    标签: python regex text


    【解决方案1】:

    我建议

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

    请参阅regex demo详情

    • ^ - 字符串开头
    • (?P&lt;StudentIDNumber&gt;(?P&lt;batch&gt;\d{2})\d*) - 组“StudentIDNumber”:两位或多位数字,组“batch”捕获前两位数
    • _Task - 文字字符串(如果字符串未知,请使用 \w+
    • \s+ - 一个或多个空格
    • (?P&lt;Subject&gt;[^_]+) - 组“主题”:_ 以外的一个或多个字符
    • _ - 一个 _ 字符
    • (?P&lt;week&gt;\d+) - 组“周”:一位或多位数字
    • _ - 一个 _ 字符
    • (?P&lt;Semester&gt;\d+) - “学期”组:一位或多位数字
    • \. - 一个点
    • (?P&lt;Extension&gt;\w+) - 组“扩展”:一个或多个单词字符
    • $ - 字符串结束。

    Python demo

    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)
    

    输出:

    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'}
    

    【讨论】:

      猜你喜欢
      • 2022-10-13
      • 2014-10-17
      • 1970-01-01
      • 2014-08-25
      • 2021-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      相关资源
      最近更新 更多