Python 从文件读取并删除\n和空格
我试图让python从一个文件中读取一些文本行,然后将它们转换为md5散列,与用户输入的散列进行比较 我使用Python 从文件读取并删除\n和空格,python,file-io,Python,File Io,我试图让python从一个文件中读取一些文本行,然后将它们转换为md5散列,与用户输入的散列进行比较 我使用f=open(file,'r')打开并读取文件,一切正常,但当它对单词进行散列时,它不是该单词的正确散列 因此,我需要知道如何删除导致散列错误的空格或结尾处的\n 如果这有道理的话。我真的不知道该怎么说 守则: 返回包含前导字符和尾随字符的字符串副本 已删除。chars参数是一个字符串,用于指定 要删除的字符。如果省略或无,则chars参数 默认为删除空白。chars参数不是前缀或前缀
f=open(file,'r')
打开并读取文件,一切正常,但当它对单词进行散列时,它不是该单词的正确散列
因此,我需要知道如何删除导致散列错误的空格或结尾处的\n
如果这有道理的话。我真的不知道该怎么说 守则: 返回包含前导字符和尾随字符的字符串副本 已删除。chars参数是一个字符串,用于指定 要删除的字符。如果省略或无,则chars参数 默认为删除空白。chars参数不是前缀或前缀 后缀相反,其值的所有组合都被剥离:
>>> s = " Hello \n".strip()
>>> print(s)
... Hello
在代码中,添加以下内容
返回包含前导字符和尾随字符的字符串副本
已删除。chars参数是一个字符串,用于指定
要删除的字符。如果省略或无,则chars参数
默认为删除空白。chars参数不是前缀或前缀
后缀相反,其值的所有组合都被剥离:
>>> s = " Hello \n".strip()
>>> print(s)
... Hello
在代码中,添加以下内容
您可以这样打开文件:
with open('file', 'r') as f:
for line in f:
do_somthing_with(line.strip())
strip()
将返回删除前导字符和尾随字符的字符串副本
编辑:多亏了
Katrielex
的评论,我纠正了我的错误(我不知道为什么我会相信我之前发布的内容)。抱歉。您可以这样打开文件:
with open('file', 'r') as f:
for line in f:
do_somthing_with(line.strip())
def readStripped(path):
with open('file') as f:
for line in f:
yield f.strip()
dict((line, yourHash(line)) for line in readStripped(path))
strip()
将返回删除前导字符和尾随字符的字符串副本
编辑:多亏了
Katrielex
的评论,我纠正了我的错误(我不知道为什么我会相信我之前发布的内容)。我的道歉。我刚刚重写了你的pastebin代码,因为它不好。你为什么要递归地写它?(行sys.setrecursionlimit(10000000)
可能是您做错了什么的线索!)
def readStripped(path):
with open('file') as f:
for line in f:
yield f.strip()
dict((line, yourHash(line)) for line in readStripped(path))
这显然会很慢,因为它每次都会对单词列表中的每个单词进行哈希运算。如果要在单词列表中查找多个单词,则应计算(一次)哈希到单词的映射(反向查找表)并使用该映射。如果你的单词列表很大,你可能需要一个新的密码。我刚刚重写了你的pastebin代码,因为它不好。你为什么要递归地写它?(行
sys.setrecursionlimit(10000000)
可能是您做错了什么的线索!)
这显然会很慢,因为它每次都会对单词列表中的每个单词进行哈希运算。如果要在单词列表中查找多个单词,则应计算(一次)哈希到单词的映射(反向查找表)并使用该映射。如果你的词表很大,你可能需要一个单词表。“我真的不知道怎么用词。”。如有疑问,请显示(1)代码、(2)输入、(3)实际输出和(4)预期输出。请使用代码、输入、实际输出和预期输出更新问题。请发布显示问题的最小代码片段。“我真的不知道如何用词。”。如有疑问,请显示(1)代码、(2)输入、(3)实际输出和(4)预期输出。请使用代码、输入、实际输出和预期输出更新问题。请发布显示问题的最小代码。不,不会
文件
@katrielex:我的道歉,你肯定是对的,我不知道为什么我相信这一点。我通常使用python-3
编写,因此我没有内置类文件的问题,但为了python-2
兼容性,我还是将其改为f
。@Katrielex:我认为使用readlines()
更好,通过这种方式,代码可以与python-2
和python-3
一起运行。自版本2.3()以来,python 2就支持对文件对象进行迭代。你试过了吗?您可能会惊讶于有多少Python3特性被后端口到Python2!不,不会的与f中的行的代码>的结果完全相同,只是它首先将整个文件读入内存,这是一种浪费。另外,不要隐藏内置类文件
@katrielex:我的道歉,你肯定是对的,我不知道为什么我相信这一点。我通常使用python-3
编写,因此我没有内置类文件的问题,但为了python-2
兼容性,我还是将其改为f
。@Katrielex:我认为使用readlines()
更好,通过这种方式,代码可以与python-2
和python-3
一起运行。自版本2.3()以来,python 2就支持对文件对象进行迭代。你试过了吗?您可能会惊讶于有多少Python3特性被后端口到Python2!我知道该怎么做,但我该如何将其应用到这是你在写一个(糟糕的)密码破解程序?我知道该如何做,但我该如何将其应用到这是你在写一个(糟糕的)密码破解程序?我用f作为打开的(原始输入(“单词列表路径”):SyntaxError:无法将其作为错误分配到函数调用。抱歉,我打字时没有思考。您应该使用
语句查看,因为您以前从未见过它:它太棒了!(已修复。)我将f作为打开(原始输入(“单词列表路径”):SyntaxError:无法分配给函数调用,因为这是一个错误。抱歉,我键入时没有考虑。您应该使用
语句查看,因为您以前从未见过它:它太棒了!(固定)