提交 44645134 authored 作者: 刘擎阳's avatar 刘擎阳

1.优化匹配规则

上级 f164212b
...@@ -51,24 +51,39 @@ class OrderStateChangeRule(models.Model): ...@@ -51,24 +51,39 @@ class OrderStateChangeRule(models.Model):
else: else:
return False return False
def find_text(self, email_body):
pattern = r'([A-Za-z]+\d+)\s+(\d{3}-\d+)\s+(\d{4})?\.?(\d{1,2})\.(\d{1,2})\s+(\d{1,2}:\d{2})\s+\(([\+\-]?\d+)\)'
data_re = re.compile(pattern)
data_arr = data_re.findall(email_body)
return data_arr
def fetch_mail_dlv(self, **kwargs): def fetch_mail_dlv(self, **kwargs):
email_body = kwargs['email_body'] email_body = kwargs['email_body']
year = kwargs['year'] year = kwargs['year']
# datas = demjson.decode(kwargs['datas']) # datas = demjson.decode(kwargs['datas'])
current_year = datetime.now().year current_year = datetime.now().year
text_arr = email_body.split('\r\n') if '\r\n' in email_body else email_body.split('\n') text_arr = self.find_text(email_body)
# text_arr = email_body.split('\r\n') if '\r\n' in email_body else email_body.split('\n')
logging.info('data_arr: %s' % text_arr)
for text in text_arr: for text in text_arr:
try: try:
text = html.unescape(text) # text = html.unescape(text)
match = self.print_match(text) # match = self.print_match(text)
if match: if text:
voyage_name = match.group(1) # SE901 voyage_name = text[0] # SE901
order_no = match.group(2) # 436-10133970 order_no = text[1] # 436-10133970
year = match.group(3) # 11 或 2024 year = text[2] # 11 或 2024
month = match.group(4) # 11 month = text[3] # 11
day = match.group(5) # 20 day = text[4] # 20
time = match.group(6) # 12:41 time = text[5] # 12:41
timezone_offset = int(match.group(7)) # +1 或 -8 timezone_offset = int(text[6]) # +1 或 -8
# voyage_name = match.group(1) # SE901
# order_no = match.group(2) # 436-10133970
# year = match.group(3) # 11 或 2024
# month = match.group(4) # 11
# day = match.group(5) # 20
# time = match.group(6) # 12:41
# timezone_offset = int(match.group(7)) # +1 或 -8
# 如果没有提供年份,则使用当前年份 # 如果没有提供年份,则使用当前年份
if not year: # 只给了月份和日,默认使用当前年份 if not year: # 只给了月份和日,默认使用当前年份
year = str(current_year) year = str(current_year)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论