从文件中读取并删除\ n和空格

时间:2012-01-16 23:46:33

标签: python file-io

我正在尝试让python从文件中读取一些文本行,然后将它们转换为md5哈希值,以便与用户输入的内容进行比较。

我正在使用f = open(file, 'r')来打开和阅读文件,一切正常,但是当它散列单词时,它不是该单词的正确哈希。

所以我需要知道如何删除空格或最后导致它不正确散列的\n

如果这是有道理的。我真的不知道如何说出来。

代码:http://pastebin.com/Rdticrbs

4 个答案:

答案 0 :(得分:3)

我刚刚重写了你的pastebin代码,因为它不好。你为什么递归写它? (行sys.setrecursionlimit(10000000)应该是你做错事的线索!)

import md5
hashed = raw_input("Hash:")
with open(raw_input("Wordlist Path: ")) as f:
    for line in f:
        if md5.new(line.strip()).hexdigest() == hashed:
            print(line.strip())
            break
    else:
        print("The hash was not found. Please try a new wordlist.")

    raw_input("Press ENTER to close.")

这显然会很慢,因为它每次都会在单词列表中隐藏每个单词。如果要在wordlist中查找多个单词,则应计算(一次)哈希到单词的映射(反向查找表)并使用它。如果您的单词列表很大,则可能需要large-scale key-value storage library

答案 1 :(得分:1)

你可以像这样打开文件:

with open('file', 'r') as f:
    for line in f:
         do_somthing_with(line.strip())

From the official documentation strip()返回字符串的副本,其中删除了前导字符和尾随字符。

编辑:由于katrielalex的评论,我纠正了我的错误(我不知道为什么我相信我之前发布的内容)。我的道歉。

答案 2 :(得分:0)

  

str.strip([chars])

     

返回带有前导和尾随字符的字符串副本   已删除.chars参数是一个指定set的字符串   要删除的字符。如果省略或None,则为chars参数   默认删除空格。 chars参数不是前缀或   后缀;相反,它的所有值组合都被剥离了:

>>> s = "  Hello   \n".strip()
>>> print(s)
... Hello

在您的代码中,添加此内容。

words = lines[num].strip()

答案 3 :(得分:0)

def readStripped(path):
    with open('file') as f:
        for line in f:
            yield f.strip()

dict((line, yourHash(line)) for line in readStripped(path))