根据检查条件在csv输出文件的每行末尾添加新变量的Python脚本
我想编写一个python脚本,在CSV文件中由脚本的初始部分生成的行的末尾添加新值。 CSV文件的值如下所示根据检查条件在csv输出文件的每行末尾添加新变量的Python脚本,python,csv,Python,Csv,我想编写一个python脚本,在CSV文件中由脚本的初始部分生成的行的末尾添加新值。 CSV文件的值如下所示 name,isactive,ful_name,emailaddress rajesh,active,Rajesh Pidikiti,myemail@corp.####.com james,active,James wood,mail@mail.com 我需要考虑每一行的名称,并检查用户是否有管理员特权(通过运行一个卷曲命令)或不。如果用户是admin,则在行(新列)末尾添加admin作
name,isactive,ful_name,emailaddress
rajesh,active,Rajesh Pidikiti,myemail@corp.####.com
james,active,James wood,mail@mail.com
我需要考虑每一行的名称,并检查用户是否有管理员特权(通过运行一个卷曲命令)或不。如果用户是admin,则在行(新列)末尾添加admin作为新值。如果没有,则添加用户作为新值
输出将如下所示
name,isactive,ful_name,emailaddress,isadmin
rajesh,active,Rajesh Pidikiti,myemail@corp.####.com,admin
james,active,James wood,mail@mail.com,user
我尝试过创建函数和for循环,但没有成功。我可以将结果附加到输入或创建新的输出文件
这是我到目前为止写的
def to_add_new_col(input_file,output_file)
with open(input_file, 'rb') as infile:
with open(output_file, 'wb') as outfile:
reader = csv.reader(infile, lineterminator='\n')
writer = csv.writer(outfile, lineterminator='\n')
check_and_add(reader, writer)
def check_and_add(reader, writer)
for i in reader:
for field in (i)
if(curl_result(field):
i=admin
else
i=user
writer.writerow(i)
您可以使用CSV读写器的默认设置。首先需要读取标题行,添加新的列标题,然后将其写入输出CSV文件。然后,对于输入CSV文件中的每一行,将
is_admin()
函数传递给一个要测试的用户,该函数返回admin
或user
(我创建了一个虚拟函数,它只测试用户名的字符数是偶数还是奇数)。然后可以将此返回值添加到行中的值列表中,并写入输出
如果您不确定这是如何工作的,请添加打印语句以提供帮助。例如,添加打印(行)
:
这将为您提供一个output.csv
文件,其中包含:
name,isactive,ful\u name,emailaddress,isadmin
rajesh,活跃,rajesh Pidikiti,myemail@corp.####.com,管理员
詹姆斯,活跃,詹姆斯·伍德,mail@mail.com使用者
请显示您以前尝试过的代码好吗?导入csv def以添加新的col(输入文件,输出文件),打开(输入文件,'rb')作为填充:打开(输出文件,'wb')作为输出文件:reader=csv.reader(infle,lineterminator='\n')writer=csv.writer(outfile,lineterminator='\n')检查并添加(reader,writer)def检查和添加(reader,writer)for i in reader:for(i)if(curl_)result(field)中的字段:i=admin else i=user writer.writerow(i)这是我到目前为止写的。
import csv
def is_admin(user):
""" Test if user is admin (replace with your curl test) """
return 'admin' if len(user) % 2 == 0 else 'user'
with open('input.csv', newline='') as f_input, open('output.csv', 'w', newline='') as f_output:
csv_reader = csv.reader(f_input)
csv_writer = csv.writer(f_output)
csv_writer.writerow(next(csv_reader) + ['isadmin'])
for row in csv_reader:
csv_writer.writerow(row + [is_admin(row[0])])