post_decorators.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. from decorator import decorator
  2. import re
  3. @decorator
  4. def rule1_decorator(f, *args, **kwargs):
  5. '''
  6. predict_line = ['项目 ', '', '每100克营养素参考值%', '']
  7. '''
  8. predict_line = args[1]
  9. predict_line = f(*args, **kwargs)
  10. idx = predict_line.index('')
  11. try:
  12. if idx == 1:
  13. if '项目' in predict_line[0] and '每100克' in predict_line[2]:
  14. predict_line[1] = '每100克'
  15. r = re.split('每100克', predict_line[2])
  16. if len(r) == 2 and r[1]:
  17. predict_line[2] = r[1]
  18. except IndexError as e:
  19. print('rule1_decorator', e)
  20. return predict_line
  21. @decorator
  22. def rule2_decorator(f, *args, **kwargs):
  23. '''
  24. predict_line = ['碳水化合物18.2克', '', '6%', '']
  25. '''
  26. predict_line = args[1]
  27. predict_line = f(*args, **kwargs)
  28. idx = predict_line.index('')
  29. try:
  30. if idx == 1:
  31. if '化合物' in predict_line[0]:
  32. r = re.split('化合物', predict_line[0])
  33. predict_line[0] = '碳水化合物'
  34. if len(r) == 2 and r[1]:
  35. predict_line[1] = r[1]
  36. except IndexError as e:
  37. print('rule2_decorator', e)
  38. return predict_line
  39. @decorator
  40. def rule3_decorator(f, *args, **kwargs):
  41. '''
  42. ['患直质', '1.6克', '3%', '']
  43. ['脂扇', '1.1', '19%', '']
  44. ['碳水化合物', '勿18.2克', '6%', '']
  45. '''
  46. predict_line = args[1]
  47. predict_line = f(*args, **kwargs)
  48. predict_line = [re.sub('患直质', '蛋白质', s) for s in predict_line]
  49. predict_line = [re.sub('脂扇', '脂肪', s) for s in predict_line]
  50. predict_line = [re.sub('勿(.*克)', '\\1', s) for s in predict_line]
  51. predict_line = [re.sub('毫 克', '毫克', s) for s in predict_line]
  52. return predict_line
  53. @decorator
  54. def rule4_decorator(f, *args, **kwargs):
  55. '''
  56. ['', '项目每一百克', '营养素参考值']
  57. '''
  58. predict_line = args[1]
  59. predict_line = f(*args, **kwargs)
  60. if '项目' in predict_line[1] and predict_line[0]=='':
  61. predict_line[0] = '项目'
  62. predict_line[1] = predict_line[1].replace('项目', '')
  63. return predict_line
  64. @decorator
  65. def rule5_decorator(f, *args, **kwargs):
  66. predict_line = args[1]
  67. predict_line = f(*args, **kwargs)
  68. if '项目' in predict_line[0] and '营养素参考值' in predict_line[1] and len(predict_line[1])>7 and predict_line[2] == '':
  69. predict_line[2] = '营养素参考值'
  70. if len(predict_line[1].split('营养素参考值'))>1:
  71. predict_line[2] = predict_line[2]+predict_line[1].split('营养素参考值')[1]
  72. predict_line[1] = predict_line[1].split('营养素参考值')[0]
  73. return predict_line