在python中读写文件,将一个文件中的文本转换为另一个文件

2024-09-29 22:00:17 发布

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

我打开两个文件并阅读它们。我有一个helper函数,它可以创建一个随机的31个字符的字母字符串+“,';。?”你知道吗

例如,函数可以创建行“seokgxavu?”bq公司,cr.ihwt公司;yjzmdfpnl“包含所有31个字符,并且是随机顺序的,helper函数创建其中2行并将它们写入秘密.txt. 你知道吗

假设两条随机的秘密线是:

seokgxavu?'bq,cr.ihwt;yjzmdfpnl    
dcurmk'ltbgjyfan?;ohzieps,vxwq.

里面的每一个字母英语.txt,每个都应该有自己相应的秘密.txt信。它每写一封信,就会收到另一条保密线的下一封。例如,“Hello”将输出“vmbja”

因为“h”是第一条秘密线的位置。
因为“e”是第二条保密线的位置。
b因为“l”是它在第一个秘密行中的位置(注意它是如何回到第一个秘密行的,这应该继续)

with open("english.txt", 'r') as e:
    PlainText = e.read()
with open("secret.txt", 'r') as s:
    SharedKeys = s.read()    


with open("code.txt", 'w') as c:

    x = english[0]               
    y = secret[0]
    x = y



    code.write(str(x))    

上面的代码将匹配英语.txt第一个字母秘密.txt然后我会写信给你代码.txt. 但是,我不确定如何重复这一点,以便它将做一整段文字。任何提示或指针是感激的!谢谢。你知道吗


Tags: 函数helpertxtaswith字母公司open
2条回答

用字典翻译代码怎么样?你可以这样做:

e='abcdefghi' #etc.
s='seokgxavu'
s_to_e={}#depending on which you need
e_to_s={}
for i in range(len(e)):#assuming s and e have same length 
    s_to_e[s[i]]=e[i]
    e_to_s[e[i]]=s[i]
code_str='seo'
decoded=''
plain_str='hifi'
encoded=''
for i in range(len(code_str)):
    decoded+=s_to_e[code_str[i]]
for i in range(len(plain_str)):
    encoded+=e_to_s[plain_str[i]]
#encoded should now be 'vuxu' and decoded 'abc'

您还必须映射空白(换行符、空格等)才能完成一段或多段,例如:

s_to_e[' ']=' '。 或者直接添加到英语和secret中作为s='cdfa 'e='abcd '

我把“你好”改成了“vmbjc”。。。我想这就是你的意思,因为当你交替的秘密线,你寻找的“o”的位置在第一个秘密线,其中有一个“c”。第二个秘密是在那个位置用“a”。你知道吗

english = "abcdefghijklmnopqrstuvwxyz" + ",';.?"
secret = []
with open("secrets.txt" , "r") as s:
    secret = [line.rstrip() for line in s]

cypher = dict((c, [x[i] for x in secret]) for i, c in enumerate(english))

def translate(s):
    secret_index = 0
    trans = []
    for c in s:
        # not sure how spaces are dealt with
        trans.append(cypher[c][secret_index] if not c == ' ' else ' ')
        secret_index = (secret_index + 1) % len(secret)
    return ''.join(trans)

print(translate("hello")) # vmbjc

更新:扩展cypher赋值

cypher = {}
for i in range(len(english)): # for each english character
    c = english[i]
    secrets = []
    for j in range(len(secret)): # for each corresponding secret character
        secrets.append(secret[j][i])
        cypher[c] = secrets # make a mapping of english character to list-of-secret-characters
    secrets = [] # clear out list of secret characters for the next english character

相关问题 更多 >

    热门问题