如何检测加密字符串中的某些条件并对其解密?-Python
我尝试使用三个不同的函数来解密加密字符串。以下条件是: (1)如果找到字符“T”(大写),则意味着接下来的三个字符必须是 小写元音 (2)如果符合规则1,则该位置将是从第四个位置开始的连续6位数字,并带有 尊重“T”字。奇数对应于第一个坐标场和对 到第二个坐标字段如何检测加密字符串中的某些条件并对其解密?-Python,python,string,function,Python,String,Function,我尝试使用三个不同的函数来解密加密字符串。以下条件是: (1)如果找到字符“T”(大写),则意味着接下来的三个字符必须是 小写元音 (2)如果符合规则1,则该位置将是从第四个位置开始的连续6位数字,并带有 尊重“T”字。奇数对应于第一个坐标场和对 到第二个坐标字段 例如: Taeo135789->[158379] Tauo123456->[135246] (3)在数字后,出现首字母缩略词3。我想单独打印这个 示例: INPUT: dsa2wtasfwTaeo135789konsadfa241
例如:
Taeo135789->[158379]
Tauo123456->[135246]
(3)在数字后,出现首字母缩略词3。我想单独打印这个
示例:
INPUT: dsa2wtasfwTaeo135789konsadfa241
OUTPUT: (Taeo135789kon)
Taeo
[158,379]
kon
我已经试过了:
定义第一条规则(str_enccript):
元音=“aeiou”
str_enccript=str(str_enccript)
对于stru_enccript中的s:
如果s中的“T”:
(接下来的三个字符必须是小写元音。)
其他:
打印(“加密字符串中的错误\n”)
您可以使用reqular表达式从字符串中提取此模式的所有示例:
import re
pat = re.compile(r'(T[aeiou]{3})(\d{6})([a-z]{3})')
def first_rule(encrypted):
for match in pat.finditer(encrypted):
t_str, nums, acro = match.group(1, 2, 3)
coordinates = [int(''.join(nums[x::2])) for x in range(2)]
print(t_str, coordinates , acro, sep='\n')
first_rule('dsa2wtasfwTaeo135789konsadfa241')
# Taeo
# [158, 379]
# kon
如果您真的不能使用re
模块(这是一个用Python分发的内置库),那么您可以使用enumerate
扫描字符串获得类似的结果:
def first_rule(encrypted):
for i, c in enumerate(encrypted):
if c == 'T':
t_str = encrypted[i+1:i+4]
if len(t_str) != 3 or any(x not in 'aeiou' for x in t_str):
continue
t_str = 'T' + t_str
nums = encrypted[i+4:i+10]
if len(nums) != 6 or any(x not in '0123456789' for x in nums):
continue
coordinates = [int(''.join(nums[x::2])) for x in range(2)]
acro = encrypted[i+10:i+13]
if len(acro) != 3 or any(x not in 'qwertyuiopasdfghjklzxcvbnm' for x in acro):
continue
print(t_str, coordinates , acro, sep='\n')
通过跟踪字符串中的索引,我们可以在
T
之前进行匹配 你没有问任何问题。你应该能够用正则表达式完成。类似于:r“(T)([aeiou]{3})(\d{6})(\w{3})”
如果你不想问,为什么要发布代码?如果你想帮助修复它,你必须解释它的问题所在。@BrianJoseph我知道,但我想做的是创建这三个不同的函数。我将更新我的代码,因为某些原因我无法粘贴它all@ScottHunter你是对的,但我想我正确地解释了问题所在:使用函数在特定条件下解密加密字符串这正是我要做的,但不使用库,只使用def函数,每一条规则都有不同的功能