1, 处理要求

  1. 1.保留字段
  2. 接受号码,运营商,地区,客户提交时间,对外转发时间,状态报告回执时间,状态
  3. 2.内容字段需要处理
  4. a.提前【 内的字段(如【神州租车】,提取 神州租车)
  5. b.判断内容里是否包含验证码三个字,如果包含,多返回一个字段1,如果不包含,返回0
  6. 3.最后返回文件为txt,字段之间间隔为“,”,行数据间隔为换行符
  7. 样例
  8. 含验证码:
  9. 接受号码,运营商,地区,客户提交时间,对外转发时间,状态报告回执时间,状态,神州租车,1
  10. 不含验证码:
  11. 接受号码,运营商,地区,客户提交时间,对外转发时间,状态报告回执时间,状态,神州租车,0

2, 数据文件

test.xlsx

3, 处理脚本

  1. import pandas as pd
  2. import re
  3. def contain_verification_code(content: str) -> int:
  4. """
  5. 判断是否包含验证码
  6. :param content:
  7. :return:
  8. """
  9. if '验证码' in content:
  10. return 1
  11. else:
  12. return 0
  13. def get_autograph(content: str) -> str:
  14. """
  15. 这个正则表达式unicode编码
  16. 3010【
  17. 3011 】
  18. :param content:
  19. :return:
  20. """
  21. regex_pattern = r".*\u3010(.+)\u3011.*"
  22. a = re.findall(pattern=regex_pattern, string=content)
  23. if len(a) > 0:
  24. return a[0]
  25. else:
  26. return '不存在'
  27. if __name__ == '__main__':
  28. input_path='lyj.xlsx'
  29. df = pd.read_excel(input_path)
  30. print(df.columns.tolist())
  31. reversed_fields = '接收号码,运营商,地区,客户提交时间,对外转发时间,状态报告回执时间,状态,签名,类别'.split(',')
  32. #df['类别'] = df['内容'].apply(contain_verification_code)
  33. #df['签名'] = df['内容'].apply(get_autograph)
  34. # 用这个似乎更直接
  35. df['类别'] = df['内容'].str.extract('.*\u3010(.+)\u3011.*').fillna('不存在')
  36. df['签名'] = df['内容'].str.contains('验证码').astype(int)
  37. print(reversed_fields)
  38. print(df[['类别', '签名','内容']].head())
  39. df = df[reversed_fields]
  40. output_path='lyj.txt'
  41. df.to_csv(path_or_buf=output_path, sep=',', index=False)