我有两个循环,一个循环用于检索密钥(电子邮件地址)并将其存储到变量中,另一个循环用于检索密钥的值(包含数据的列表)。但是,脚本运行后,将重复最后的键。
我尝试移动for
循环,并尝试创建一个新的代码块,该代码块将键放入列表中,并且仅一个一个地检索它们,但这没有用。
import re
import os
userInfoDict = dict()
newDict = eval(open("/home/ad.ilstu.edu/keschm1/IT170/UserLog//myData.txt").read())
list = []
#print(newDict)
email = ' '
firstName = ' '
lastName = ' '
IP = ' '
for keys in newDict.keys():
email = keys
for values in newDict.values():
firstName = values[0]
lastName = values[1]
IP = values[2]
#print('The name is: ' + firstName + ' ' +lastName +' the IP is: ' + IP +'\n')
list.append(email + ": " + firstName + " " + lastName +":" + IP)
file = open("userInfo.txt", "w")
for items in list:
file.write(items + '\n')
#print(items)
file.close()
这是打印到txt文档上的结果
hosack@comcast.com .:格伦·威尔逊(Glen Wilson):172.39.112.76 hosack@comcast.com。:Cindy Tady:123.18.19.20 hosack@comcast.com。:Emma 林:11.11.11.11 hosack@comcast.com .:安娜·史密斯:172.28.19.15 hosack@comcast.com。:Jack Hosack:196.88.45.23
答案 0 :(得分:0)
for keys in newDict.keys():
email = keys
您认为这是做什么的?这会将newDict中的每个键一个接一个地分配给相同的 email 变量。因此,电子邮件最终将设置为您从 newDict 词典处理的最后一个键值。可能不是您想要的。
由于这是设置电子邮件的唯一方法,因此以后在代码中使用时,它将始终设置为相同的值。
您可能想要的是这样的东西:
for email, values in newDict.items():
firstName = values[0]
lastName = values[1]
IP = values[2]
#print('The name is: ' + firstName + ' ' +lastName +' the IP is: ' + IP +'\n')
list.append(email + ": " + firstName + " " + lastName +":" + IP)