update: 补充正则表达式一章练习题的参考答案
This commit is contained in:
51
code/07/regex-quiz.py
Normal file
51
code/07/regex-quiz.py
Normal file
@@ -0,0 +1,51 @@
|
||||
import re
|
||||
import unittest
|
||||
|
||||
FLAGS = re.X | re.S
|
||||
REGEXP = r"""
|
||||
(?P<date>\d{4}(-\d{2}){2}) # date format like: YYYY-MM-DD
|
||||
\s
|
||||
(?P<time>\d{2}(:\d{2}){2}) # time format like: HH:MM:SS
|
||||
[\s-]+
|
||||
(?P<project>[^\s-]+) # project name
|
||||
[\s-]+
|
||||
(?P<filename>.*) # filename
|
||||
"""
|
||||
pat = re.compile(REGEXP, FLAGS)
|
||||
|
||||
files = """
|
||||
2021-10-10 20:20:20-其他 - 数据.csv
|
||||
2021-10-21 12:23:41-写作 - 少数派稿子.md
|
||||
2020-01-13 13:45:15-测试 - 测试案例.py
|
||||
2019-08-09 10:21:39-日记 -20190809 日记.md
|
||||
2017-12-12 12:12:12-工作 - 公司合同.docx
|
||||
"""
|
||||
files = files.strip().split("\n")
|
||||
|
||||
|
||||
def rename(file):
|
||||
matched = pat.search(file).groupdict()
|
||||
date = matched["date"].replace("-", "")
|
||||
project = matched["project"].replace(" ", "_")
|
||||
filename = matched["filename"].replace(" ", "_")
|
||||
return "_".join([date, project, filename])
|
||||
|
||||
|
||||
class TestRename(unittest.TestCase):
|
||||
|
||||
cases = [
|
||||
("2021-10-10 20:20:20-其他 - 数据.csv", "20211010_其他_数据.csv"),
|
||||
("2021-10-21 12:23:41-写作 - 少数派稿子.md", "20211021_写作_少数派稿子.md"),
|
||||
("2020-01-13 13:45:15-测试 - 测试案例.py", "20200113_测试_测试案例.py"),
|
||||
("2019-08-09 10:21:39-日记 -20190809 日记.md", "20190809_日记_20190809_日记.md"),
|
||||
("2017-12-12 12:12:12-工作 - 公司合同.docx", "20171212_工作_公司合同.docx"),
|
||||
]
|
||||
|
||||
def test_rename(self):
|
||||
for (raw, expected) in self.cases:
|
||||
file = rename(raw)
|
||||
self.assertEquals(file, expected)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user