Why do I get ValueError: dict contains fields not in fieldnames when trying to write Python dict to csv?
Why do I get ValueError: dict contains fields not in fieldnames when trying to write Python dict to csv?
我遇到了这个错误
ValueError: dict contains fields not in fieldnames: 'bobama', 'mfisc', 'nhay', 'bgates', 'jdoe', 'sburry', 'mcuban'
使用以下代码:
class Authentication:
def __init__(self):
# instantiate an instance variable
self.user_dict = {}
def register_user(self, uname, passwd):
if uname in self.user_dict:
print("Username exists! Try a new one.")
return False
else:
self.user_dict[uname] = passwd
print("Registration successful" )
return True
def data_entry(auth):
# registering 3 users
auth.register_user('jdoe', '4^%$') # Jane Doe
auth.register_user('sburry', '456@#&^') # Sam Burry
auth.register_user('mfisc', '%6&#$@#') # Mike Fischer
auth.register_user('nhay', 'ildfu45') # Nicky Hailey
auth.register_user('bobama', 'klj43509jafd') # Barack Obama
auth.register_user('bgates', '^&%kjsfd934@#$') # Bill Gates
auth.register_user('mcuban', '9&4rl#nsf') # Mark Cuban
# Main program
auth = Authentication()
data_entry(auth)
dictt = auth.user_dict
import csv
class AuthenticationIOcsv(Authentication):
def write_info(self):
fname='userinfo.csv'
with open(fname,'w') as op_file:
field_names = ['Username', 'Password']
op_writer = csv.DictWriter(op_file, fieldnames=field_names)
op_writer.writeheader()
op_writer.writerow(dictt)
# Main Program
auth = AuthenticationIOcsv()
data_entry(auth)
# writing to file
auth.write_info()
该项目的目的是使用继承和 child class 创建一个包含 headers 'Username' 和 [=27 列的 csv 文件=] 然后分别是这些列中的字典键和值。我玩弄了一些其他解决方案来将字典写入 csv,我可以 post 但结果是只有 headers 的空白 csv 文件或其他类型的错误。例如:
op_writer = csv.DictWriter(op_file, fieldnames=field_names)
op_writer.writeheader()
for key, value in dictt.items():
op_writer.writerow([key,value])
我收到这个错误:
AttributeError: 'list' object has no attribute 'keys'
我是 Python 的新手,因此非常感谢任何指导!我显然很难理解如何以导出到 excel 的方式访问字典项目。先感谢您。
这是一个DictWriter
,只收到dict data
。
可以使用这种方式写入数据:
op_writer = csv.DictWriter(op_file, fieldnames=field_names)
op_writer.writeheader()
for username, pwd in dictt.items():
op_writer.writerow({"Username": username, "Password": pwd})
我遇到了这个错误
ValueError: dict contains fields not in fieldnames: 'bobama', 'mfisc', 'nhay', 'bgates', 'jdoe', 'sburry', 'mcuban'
使用以下代码:
class Authentication:
def __init__(self):
# instantiate an instance variable
self.user_dict = {}
def register_user(self, uname, passwd):
if uname in self.user_dict:
print("Username exists! Try a new one.")
return False
else:
self.user_dict[uname] = passwd
print("Registration successful" )
return True
def data_entry(auth):
# registering 3 users
auth.register_user('jdoe', '4^%$') # Jane Doe
auth.register_user('sburry', '456@#&^') # Sam Burry
auth.register_user('mfisc', '%6&#$@#') # Mike Fischer
auth.register_user('nhay', 'ildfu45') # Nicky Hailey
auth.register_user('bobama', 'klj43509jafd') # Barack Obama
auth.register_user('bgates', '^&%kjsfd934@#$') # Bill Gates
auth.register_user('mcuban', '9&4rl#nsf') # Mark Cuban
# Main program
auth = Authentication()
data_entry(auth)
dictt = auth.user_dict
import csv
class AuthenticationIOcsv(Authentication):
def write_info(self):
fname='userinfo.csv'
with open(fname,'w') as op_file:
field_names = ['Username', 'Password']
op_writer = csv.DictWriter(op_file, fieldnames=field_names)
op_writer.writeheader()
op_writer.writerow(dictt)
# Main Program
auth = AuthenticationIOcsv()
data_entry(auth)
# writing to file
auth.write_info()
该项目的目的是使用继承和 child class 创建一个包含 headers 'Username' 和 [=27 列的 csv 文件=] 然后分别是这些列中的字典键和值。我玩弄了一些其他解决方案来将字典写入 csv,我可以 post 但结果是只有 headers 的空白 csv 文件或其他类型的错误。例如:
op_writer = csv.DictWriter(op_file, fieldnames=field_names)
op_writer.writeheader()
for key, value in dictt.items():
op_writer.writerow([key,value])
我收到这个错误:
AttributeError: 'list' object has no attribute 'keys'
我是 Python 的新手,因此非常感谢任何指导!我显然很难理解如何以导出到 excel 的方式访问字典项目。先感谢您。
这是一个DictWriter
,只收到dict data
。
可以使用这种方式写入数据:
op_writer = csv.DictWriter(op_file, fieldnames=field_names)
op_writer.writeheader()
for username, pwd in dictt.items():
op_writer.writerow({"Username": username, "Password": pwd})