2017-05-23 231 views
0

我在尋求一些建議,無論是用腳本(可能是python?),我可以用它來做以下事情。比較兩個文件並將輸出寫入第三個[Python?]

我基本上有兩個文件,從數據庫取:

文件一個包含:

hash/related username. 

例如:

fb4aa888c283428482370 username1 
fb4aa888c283328862370 username2 
fb4aa888c283422482370 username3 
fb4aa885djsjsfjsdf370 username4 
fb4aa888c283466662370 username5 

文件2包含:

hash : plaintext 

例如:

fb4aa888c283428482370:plaintext 
fb4aa888c283328862370:plaintext2 
fb4aa888c283422482370:plaintext4 
fb4aa885djsjsfjsdf370:plaintextetc 
fb4aa888c283466662370:plaintextetc 

誰能想到對我來說,文檔兩個哈希值與文檔中的一個相關的用戶名進入一個新的文檔匹配的簡單方法(比如文檔的三種),並添加平原所以它看起來像下面...

Hash : Relevant Username : plaintext 

這將節省我很多具有交叉參考兩個文件時,發現手工相關的散列值和它所屬的用戶。 我從來沒有真正使用Python,所以一些例子會很棒!

在此先感謝

+0

這是習慣,如果你被給予一個答案對你的問題,你把它標記爲這樣......或者跟進以得到你需要的答案。 – SteveJ

回答

0

我不會對你有任何代碼,但一個非常基本的方式來做到這將是掀起一個腳本,執行以下操作:

  1. 閱讀第一DOC轉化爲以散列爲關鍵字的字典。
  2. 將第二個文檔讀入散列爲鍵的字典中。
  3. 迭代通過這兩個字典,按鍵,在同一個循環中,寫出你想要的信息到第三個文檔。
0

你沒有真正指定你想要的輸出,但這應該讓你足夠接近以修改你的喜好。有很多人可以將它縮短爲一小段代碼 - 但我認爲保持它的可讀性可能對你剛開始起作用很有幫助。

順便說一句,我可能會避免這種乾脆在SQL創建文件之前加入 - 但是,是不是真的你的問題:)

usernames = dict() 
plaintext = dict() 
result = dict() 

with open('username.txt') as un: 
    for line in un: 
     arry = line.split() #Turns the line into an array of two parts 
     hash, user = arry[0], arry[1] 
     usernames[hash] = user.rsplit()[0] # add to dictionary 

with open('plaintext.txt') as un: 
    for line in un: 
     arry = line.split(':') 
     hash, txt = arry[0], arry[1] 
     plaintext[hash] = txt.rsplit()[0] 

for key, val in usernames.items(): 
    hash = key 
    txt = plaintext[hash] 
    result[val] = txt 

with open("dict.txt", "w") as w: 
    for name, txt in result.items(): 
     w.write('{0} = {1}\n'.format(name, txt)) 

print(usernames) #{'fb4aa888c283466662370': 'username5', 'fb4aa888c283422482370': 'username3' ................... 
print(plaintext) #{'fb4aa888c283466662370': 'plaintextetc', 'fb4aa888c283422482370': 'plaintext4' ................ 
print(result) #{'username1': 'plaintext', 'username3': 'plaintext4', ..................... 
相關問題