日志文件中的行我将搜索信息
bkup = "2015-03-27 09:54 *** Backup done. Errors: 0. Processed files: 8748. Backed up files: 8748. Total size: 5.80 GB ***"
代码我会用来提取信息
end = re.findall(r'\d{4}\-\d{2}\-\d{2}\s\d{2}\:\d{2}\s\*\*\*\sBackup\sdone\.\s\sErrors:\s\d{1,5}\.\s\sProcessed\sfiles:\s\d{1,5}\.\sBacked\sup\sfiles:\s\d{1,5}\.\sTotal\ssize:\s\d{1,5}\.\d{1,2}\d{1,2}\s[M|G]B\s\*\*\*', bkup)
这适用于"总大小:"引用为MB或GB,但在读取" bytes"
时不引用e.g。
bkup = "2015-03-27 09:54 *** Backup done. Errors: 0. Processed files: 8748. Backed up files: 8748. Total size: 0 bytes ***"
有没有办法找到MB或GB或字节。 我不是Python的专家,所以不要惹我生气。这是我的第一个问题。
答案 0 :(得分:1)
import re
re.findall(r"\d+(?:\.\d+)?\s*(?:[GM]B|bytes?)","2015-03-27 09:54 *** Backup done. Errors: 0. Processed files: 8748. Backed up files: 8748. Total size: 5.80 GB *** 5.80 MB 612323 bytes 612323 byte",re.I)
您可以直接使用此功能。See Demo
答案 1 :(得分:0)
你想要的是你的表达:
(MB|GB|bytes)
它将匹配“MB”或“GB”或“字节”。
答案 2 :(得分:0)
m = re.compile(r'\d{4}\-\d{2}\-\d{2}\s\d{2}\:\d{2}\s\*\*\*\sBackup\sdone\.\s\sErrors:\s\d{1,5}\.\s\sProcessed\sfiles:\s\d{1,5}\.\sBacked\sup\sfiles:\s\d{1,5}\.\sTotal\ssize:\s\d+(\.\d+)?\s(MB|GB|bytes)\s\*\*\*')
if m.match(bkup):
# do something
pass
\ d +(。\ d +)?匹配5.80或0
(MB | GB | bytes)匹配MB或GB或字节