Python查找文件中符合规则的内容

内容规则:

  • 密码两侧均有且只有三个大写字母
  • 每个密码为单个小写字母
  • 文件内容:string2

代码逻辑:

在开始的时候,想到第一个的是两侧都有三个大写字母,中间一个小写字母,那就是刚好7位了,后面才发现且只有(这玩意在群里问了半天,才模模糊糊的知道了),后面将切割为9位。

知识点:

replace(),去重

列表的切片(https://www.lijinlong.cc/python/pyxx/1542.html),注意从0开始索引。

代码:

  1. f =open(r'/Users/lijinlong/Desktop/string2.txt')
  2. c = f.read()
  3. a = c.replace("\n", "")
  4. n = 0
  5. while n<len(a):
  6.     n+=1
  7.     b = a[n:9+n]
  8.     # print(b)
  9.     if len(b) == 9:
  10.         if b[0].islower() and b[1:4].isupper() and b[4:5].islower() and b[5:8].isupper() and b[-1].islower():
  11.             print(b[4:5],end='')

第二种解法

通过对字符串的索引,来统计大小写的字母的数量,最终来判断是否符合规则

  1. str1 = c
  2. countA = 0  # 统计前边的大写字母
  3. countB = 0  # 统计小写字母
  4. countC = 0  # 统计后边的大写字母
  5. length = len(str1)
  6. for i in range(length):
  7.     if str1[i] == '\n':
  8.         continue
  9.     if str1[i].isupper():
  10.         if countB:
  11.             countC += 1
  12.         else:
  13.             countC = 0
  14.             countA += 1
  15.     if str1[i].islower():
  16.         if countA != 3:
  17.             countA = 0
  18.             countB = 0
  19.             countC = 0
  20.         else:
  21.             if countB:
  22.                 countA = 0
  23.                 countB = 0
  24.                 countC = 0
  25.             else:
  26.                 countB = 1
  27.                 countC = 0
  28.                 target = i
  29.     if countA == 3 and countC == 3:
  30.         if i+1 != length and str1[i+1].isupper():
  31.             countB = 0
  32.             countC = 0
  33.         else:
  34.             print(str1[target], end='')
  35.             countA = 3
  36.             countB = 0
  37.             countC = 0

 

 

李金龙

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: