zoukankan      html  css  js  c++  java
  • Python 记录一个坑

    我有一个项目,批量登录网页账号的,在每登录一个账号的时候,可能会出现验证备用邮箱的字符串,把这个字符串提取出来后与原本完整的邮箱进行比对,这里会出现一个大坑。有时候python之禅的“极简”还是得放放。

    下面是提取的字符串,类似:

    svi•••••••@vi•.••.com
    svi•••••••@fo•••••.com
    28••••••@qq.com
    svi•••••••@ou•••••.com
    vip••••••@ou•••••.com
    liu••••••@live.com
    svi•••••••@hotmail.com
    ann••••••••••@ou•••••.com

    把上面的字符串存储后,第二步是要对这些字符串进行还原:

     1 if '28' in strResult:
     2     strResult = '2810xx11@qq.com'
     3 elif 'svi' and '@fo' in strResult:
     4     strResult = 'svipxxon@foxmail.com'
     5 elif 'svi' and '@vi' in strResult:
     6     strResult = 'svipdraxx@vip.qq.com'
     7 elif 'vip' and '@ou' in strResult:
     8     strResult = 'vipdxxx@outlook.com'
     9 elif 'svi' and '@ou' in strResult:
    10     strResult = 'svipdxxx@outlook.com'
    11 elif 'liu' and '@live' in strResult:
    12     strResult = 'liuxxxg@live.com'
    13 elif 'ann' and '@ou' in strResult:
    14     strResult = 'annxxx.xan@outlook.com'
    15 elif 'svi' and '@ho' in strResult:
    16     strResult = 'svipxxx@hotmail.com'
    17 
    18 print(strResult)

    上面的代码就会出现坑,有些运行的效果都不是预期的,匹配出来的让人头晕脑胀,特别是三个outlook.com的邮箱,一会结果是svipdxxx@outlook.com,一会结果是vipdxxx@outlook.com,更有甚者想匹配svi和vip的时候会出现结果annxxx.xan@outlook.com。搞得我头晕了,卡了一天,然后请教了一个朋友,大神,没有两分钟,就跟我说:“代码看上去没错,换种写法试试,elif 'svi' in strResult and '@vi' in strResult”。就是这句话,醍醐灌顶,恍然大悟,所以我就有点怪python之禅了。我以为我写这个条件的时候写得已经很死了,他说了之后,我才发现,在完成预期的前提下,他这样算是写的最死的了。不说了,将代码贴上,记录一下:

     1 strResult = 'vip••••••@ou•••••.com'
     2 
     3 if '28' in strResult:
     4     strResult = '2810xx11@qq.com'
     5 elif 'svi' in strResult and '@fo' in strResult:
     6     strResult = 'svipxxon@foxmail.com'
     7 elif 'svi' in strResult and '@vi' in strResult:
     8     strResult = 'svipdraxx@vip.qq.com'
     9 elif 'vip' in strResult and '@ou' in strResult:
    10     strResult = 'vipdxxx@outlook.com'
    11 elif 'svi' in strResult and '@ou' in strResult:
    12     strResult = 'svipdxxx@outlook.com'
    13 elif 'liu' in strResult and '@live' in strResult:
    14     strResult = 'liuxxxg@live.com'
    15 elif 'ann' in strResult and '@ou' in strResult:
    16     strResult = 'annxxx.xan@outlook.com'
    17 elif 'svi' in strResult and '@ho' in strResult:
    18     strResult = 'svipxxx@hotmail.com'
    19 
    20 print(strResult)

    改完后,代码运行如预期。

  • 相关阅读:
    一次使用布隆过滤器的经历
    从C#到Java(effective-java阅读笔记)
    从C#到Java(泛型)
    Dubbo学习-第一章
    从C#到Java(Spring拦截器HandlerInterceptor )
    从C#到Java(Aspect)
    从C#到Java(SpringBoot入门)
    从C#到Java(lambda比较)
    Redis添加List
    Three.js学习(相机,场景,渲染,形状)
  • 原文地址:https://www.cnblogs.com/mafu/p/14226476.html
Copyright © 2011-2022 走看看