比较两个文档并将输出写入第三个[Python?]

时间:2017-05-23 15:50:27

标签: python sql database hash

我正在寻求一些建议,无论是用于执行以下操作的脚本(可能是python?)。

我基本上有两个文件,取自DB:

文档包含:

hash / related username.

示例:

fb4aa888c283428482370   username1
fb4aa888c283328862370   username2
fb4aa888c283422482370   username3
fb4aa885djsjsfjsdf370   username4
fb4aa888c283466662370   username5

文档二包含:

hash : plaintext

示例:

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

任何人都可以想到一种简单的方法让我将文档二中的哈希与文档一中的相关用户名匹配到一个新文档(比如文档三)并添加普通文件,使其看起来如下所示......

Hash : Relevant Username : plaintext

这将节省我很多时间来交叉引用两个文件,手动查找相关的哈希及其所属的用户。 我之前从未真正使用过python,所以有些例子会很棒!

提前致谢

2 个答案:

答案 0 :(得分:0)

我没有为您提供任何代码,但执行此操作的一个非常基本的方法是启动执行以下操作的脚本:

  1. 将第一个文档读入一个以哈希为键的字典中。
  2. 将第二个文档读入一个以哈希为键的字典。
  3. 在同一个循环中,通过键遍历字典,将所需信息写入第三个文档。

答案 1 :(得分: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', .....................