如何在python中使用正则表达式从字符串中提取一些字符
有一个学生作业文件,其文件命名模式如下:如何在python中使用正则表达式从字符串中提取一些字符,python,regex,text,Python,Regex,Text,有一个学生作业文件,其文件命名模式如下: 160608726_Task Basic Programming_02_02.pdf 200610612_Task PTI_12_01.xls 180609074_Task Industrial Automation 1_04_04.doc 我想确定学生ID号文件的所有者、学生的批次、课程的名称、星期以及文件的扩展名 学生批次从2个第一个数字中获得(例如:20,则年份为2020年,如果18,则年份为2018年) 输出程序用于200610612_任务PT
160608726_Task Basic Programming_02_02.pdf
200610612_Task PTI_12_01.xls
180609074_Task Industrial Automation 1_04_04.doc
我想确定学生ID号文件的所有者、学生的批次、课程的名称、星期以及文件的扩展名
学生批次从2个第一个数字中获得(例如:20,则年份为2020年,如果18,则年份为2018年)
输出程序用于200610612_任务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')
打印(x)
但是我建议输出是[]
^(?P(?P\d{2})\d*)\u Task\s+(?P[^\u]+)\ u(?P\d+)\u(?P\d+)\(?P\w+)$
看。详情:
^
-字符串的开头
(?P(?P\d{2})\d*)
-将“StudentIDNumber”分组:两个或更多数字,并将捕获前两个数字的“batch”分组
\u任务
-文字字符串(如果字符串未知,请使用\w+
)
\s+
-一个或多个空格
(?P[^]+)
-分组“主题”:一个或多个字符,而不是
字符
(?P\d+)
-组“周”:一个或多个数字
字符
(?P\d+)
-组“学期”:一个或多个数字
\。
-一个点
(?P\w+)
-组“扩展”:一个或多个单词字符
$
-字符串结束
见:
重新导入
rx=re.compile(r'^(?P(?P\d{2})\d*)\u Task\s+(?P[^ P]+)\u(?P\d+)\u(?P\d+)\(?P\w+)$)
files=['160608726_Task Basic Programming_02_02.pdf',
“200610612_任务PTI_12_01.xls”,
“180609074_任务工业自动化1_04_04.doc”]
对于文件中的fn:
打印(f“解析{fn}”)
res=接收匹配(fn)
如果有的话:
resdict=res.groupdict()
resdict[“batch”]=f“20{resdict['batch']}”
打印(重新编辑)
输出:
解析160608726_任务基本编程_02_02.pdf
{'StudentIDNumber':'160608726','batch':'2016','Subject':'Basic Programming','week':'02','Semment':'02','Extension':'pdf'}
解析200610612_任务PTI_12_01.xls
{'StudentIDNumber':'200610612','batch':'2020','Subject':'PTI','week':'12','Semment':'01','Extension':'xls'}
解析180609074_任务工业自动化1_04_04.doc
{'StudentIDNumber':'180609074','batch':'2018','Subject':'Industrial Automation 1','week':'04','sement':'04','Extension':'doc'}