字符串被python列为不同,即使它们显然是相同的?

时间:2014-05-23 05:15:03

标签: python string hash compare

我有2个字符串:str1str2

我如何得到str1:

class Verifier(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.entry = tk.Entry(self, show='*')
        self.button = tk.Button(self, text="Verify", command=self.on_button)
        self.button.pack()
        self.entry.pack()

    def on_button(self):
        p = self.entry.get()
        str1 = hashlib.md5(p).hexdigest()

Str1是输入tkinter文本框的文本的md5。

如果我输入' hello',Str1为'5d41402abc4b2a76b9719d911017c592'

我是如何得到Str2:

Str2 = open("x.txt", "r").readlines()[0]

这是一个文本文件,其中md5哈希为' hello' (5d41402abc4b2a76b9719d911017c592)。

这是一个描述这个的脚本:

import Tkinter as tk, hashlib
Str2 = open("x.txt", "r").readlines()[0]
class Verifier(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.entry = tk.Entry(self, show='*')
        self.button = tk.Button(self, text="Verify", command=self.on_button)
        self.button.pack()
        self.entry.pack()

    def on_button(self):
        p = self.entry.get()
        Str1 = hashlib.md5(p).hexdigest()
        print Str1
        print Str2 #Notice how these are the same
        print Str1 == Str2 #Why does this return false
        print str(Str1) == str(Str2) #FOR GOOD MEASURE
Verifier().mainloop()

我不知道它是不是我,或者是什么。我正在运行python 2.7

以下是截图:screenshot

请帮忙。

1 个答案:

答案 0 :(得分:2)

Str2最后有一个换行符。做:

Str2.strip()

删除它。

编辑:正如评论中所提到的,str.rstrip()只会删除字符串右侧的字符,而str.strip()会从两端剥离。但是,请注意在从文件解析时在开头有空格的字符串,因为str.rstrip()不会删除它。这是我默认坚持使用str.strip()的主要原因。我也不关心这里的效率;我几乎可以保证分析大多数代码会找到比str.strip()和str.rstrip()之间的差异更大的瓶颈。