Python读取文件,在passag中找到隐藏的消息

2024-05-16 10:26:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我想打开一个包含加密信息的文件,例如一本书的一段话。在

  1. 将通道作为一根细绳加载。在
  2. 删除所有非字母字符。在
  3. 将字符串拆分为一个表,每行至少包含5个字符。在
  4. 使用数字序列4,5,4,3,1,1,2,3,4,5为每一行编制索引。在

结果应该是:

  was h er
thise e
 fret l
   rj l
    d o

到目前为止,我得到的是:

^{pr2}$

Tags: 文件字符串信息字母序列数字字符er
1条回答
网友
1楼 · 发布于 2024-05-16 10:26:39

您的一些索引已被1关闭,因此我将它们更正为:3,5,4,2,1,1,2,3,4,5。在

下面是您需要的代码,问题是您只迭代了这些行,而没有从中提取任何内容。主要是因为你的函数没有输入。在

此方法将类似文件的对象和整数列表作为“键”:

def cipher(encrypted,key):
    return "".join([line[offset] for offset,line in zip(key,encrypted.readlines())])

展开后是:

^{pr2}$

或者直接构建字符串(由于数组是可变的,这可能需要更长的时间,而这需要每次迭代都构建一个新的字符串):

def cipher(encrypted,key):
    message=""
    for offset,line in zip(key,encrypted.readlines()):
        message = message + line[offset]
    return message

这将密钥和加密的文件以及^{}s放在一起构成一个可访问的元组,我们使用它来索引文件的每一行。如果文件可能很长,您可能需要使用^{} from ^{}在内存中使用iterable而不是列表压缩。在

并返回文本。在

下面是一个调用它的示例程序:

from StringIO import StringIO
f = StringIO("""washer
thisee
fretl
rjl
do""")
print cipher(f,[3,5,4,2,1,1,2,3,4,5])

当run打印时:

>>> hello

相关问题 更多 >