Python中文件的加扰行

时间:2013-01-28 18:47:31

标签: python string scramble

我有一个包含大字符串的文件,我需要对每一个字符串进行加扰。 这是我的代码的一部分,它进行加扰。

    for line in filein:
        zzz = line.strip('\n').split()
        yyy = list(zzz)
        random.shuffle(yyy)
        zzzz = ''.join(yyy)
        fout.write(zzzz + '\n')

我在网上找到了这样的东西,所以试着在这里使用它。 除了原始文件和应该包含加扰行的文件......是相同的。

但是,如果我说复制其中一行,并直接在python解释器中执行此操作...

>>>import random
>>>zzz = "..." ###(one of my large strings would go here, for sake of space didn't put it in)
>>>yyy = list(zzz)
>>>random.shuffle(yyy)
>>>zzzz = ''.join(yyy)
>>>zzzz

打印出的字符串是我原始字符串的加扰版本。我忘了做一些非常简单和愚蠢的事情吗?还是我错过了重要的事情?

1 个答案:

答案 0 :(得分:5)

line.split返回一个长度仅为1个元素的列表(行本身),因为您的数据可能没有穿插其中的空格。然后你把它变成一个列表(除了做一个浅的副本之外什么也没做)所以你最终洗牌长度为1的列表 - 这导致了一个不那么随机的结果: - )。

解决方法是摆脱split

for line in filein:
    zzz = line.rstrip('\n')
    yyy = list(zzz)
    random.shuffle(yyy)
    zzzz = ''.join(yyy)
    fout.write(zzzz + '\n')