arnold / book cipher with python

时间:2017-03-21 12:06:08

标签: python encryption decode words paragraphs

我试图写一本书密码解码器,以下是我到目前为止所做的。

code = open("code.txt", "r").read() 
my_book = open("book.txt", "r").read() 
book = my_book.txt 
code_line = 0 
while code_line < 6 :
      sl = code.split('\n')[code_line]+'\n'
      paragraph_num = sl.split(' ')[0]
      line_num =  sl.split(' ')[1]
      word_num = sl.split(' ')[2]
      x = x+1

循环改变了段落,行,单词变量,并且每件事都运行得很好。

但我现在需要的是如何指定段落然后是行然后单词 while循环中的for循环可以完美地运行..

所以我想从段落编号&#34; paragraph_num&#34;和行号&#34; line_num&#34;单词编号&#34; word_num&#34;

这是我的代码文件,我试图将其转换为单词

  

&#34;段号&#34;,&#34;行号&#34;,&#34;字号&#34;

70 1 3
50 2 2
21 2 9
28 1 6
71 2 2
27 1 4

然后我希望我的输出看起来像这样

word 
word  
word 
word 
word 
word
顺便说一句,我的书&#34;那个我需要从&#34;看起来像这样

  

单词单词单词单词单词单词单词单词单词   词词词词词词词词词词词词   词词词词词词词词词词词词   单词单词单词单词单词单词单词单词

     

单词单词单词单词单词单词单词单词单词   词词词词词词词词词词词词   词词词词词词词词词词词词   词词词词词词词词词词词词   单词单词单词

     

单词单词单词单词单词单词单词单词单词   词词词词词词词词词词词词   词词词词词词词词词词词词   单词单词单词

2 个答案:

答案 0 :(得分:0)

你已经知道如何阅读书籍文件,将其分成几行,然后将每一行分解为单词。

如果段落被定义为由"\n\n"分隔,您可以split上的书籍文件内容,并将每个段落分成几行。或者,在您将书分成几行后,任何空行都表示段落的变化。

答案 1 :(得分:0)

这可能是一个很晚的答案;但现在比从未想过更好?

我已完成图书密码的实现, 我想说的是完全符合您的要求。

  • 需要一个图书文件(在我的示例测试运行中,位于底部“ Shakespeare.txt”中)
  • 和一条消息(单词)
  • 查找输入的每个单词的索引,并从该单词中获得相同的单词->但在书中。
  • 它打印出书的单词索引。

看看吗?希望对您有帮助!

我为此疯狂。花了我从字面上看的年份 这个!

祝你有美好的一天!

我相信使用有效代码的答案,或者至少是朝这个方向尝试的方法。这就是为什么我也提供此代码; 真希望它对您和未来的观众都有帮助!

主要编辑:

编辑1:在此处提供代码,方便以后的观看者使用;希望对您有帮助:

主程序:

最初来自我的GitHub:https://github.com/loneicewolf/Book-Cipher-Python

我将其缩短并删除了一些东西(在这种情况下并不需要),以使其更加“优雅”(并且希望它也变得如此)

# Replace "document1.txt" with whatever your book / document's name is.

BOOK="document1.txt" # This contains your "Word Word Word Word ...." I believed from the very start that you meant, they are not the same - (obviously)

# Read book into "boktxt"
def GetBookContent(BOOK):
    ReadBook = open(BOOK, "r")
    txtContent_splitted = ReadBook.read();
    ReadBook.close()
    Words=txtContent_splitted

    return(txtContent_splitted.split())


boktxt = GetBookContent(BOOK)

words=input("input text: ").split()
print("\nyou entered these words:\n",words)

i=0
words_len=len(words)
for word in boktxt:
    while i < words_len:
        print(boktxt.index(words[i]))
        i=i+1

x=0
klist=input("input key-sequence sep. With spaces: ").split()
for keys in klist:
        print(boktxt[int(klist[x])])
        x=x+1

已添加测试:

编辑:我想我可以提供一本书的样本运行,至少要在实际中展示它。.很抱歉没有尽快提供: 我执行了python脚本:我使用Shakespeare.txt作为我的'book' file.

输入文字:King of dragon, lord of gold, queen of time has a secret, which 3 or three, can hold if two of them are dead

(我也在其中添加了一个数字,所以如果将来有人想知道的话,它也将证明它也适用于数字)

并输出您的图书代码:

27978 130 17479 2974 130 23081 24481 130 726 202 61 64760 278 106853 1204 38417 256 8204 97 6394 130 147 16 17084

例如:

27978表示27978'th中的word Shakespeare.txt

要解密它,您需要输入书代码并输出纯文本! (您最初输入的字词)

输入键序列sep。带有空格:27978 130 17479 2974 130 23081 24481 130 726 202 61 64760 278 106853 1204 38417 256 8204 97 6394 130 147 16 17084

->输出->

King of dragon, lord of gold, queen of time has a secret, which 3 or three, can hold if two of them are dead

//希望 威廉。