在Python中操作csv文件

时间:2017-06-18 20:41:30

标签: python csv module

我想根据csv文件中的条件选择一些数据并将其写入另外组织的anoter csv文件中,然后再选择另一个数据并将其再次写入同一行的另一个文件中。我使用csv模块和函数writerow来做到这一点:

#Creation of the other csv file 
with open('superAdmins.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile)
    spamwriter.writerow(['SuperAdmins'] + ['2 step authentication'] + ['Portée des droits'])

i = 0



#Selection of the first data 
with open('admins.csv', 'r') as csvinput,open('2authentication.csv', 'r') as csvinput2, open('superAdmins.csv', 'w+') as csvoutput:
    reader = csv.DictReader(csvinput, delimiter=',') #lecteur
    reader2 = csv.DictReader(csvinput2, delimiter=',') #lecteur 

    fieldnames = ['SuperAdmins', '2 step authentication','Portée des droits']
    writer = csv.DictWriter(csvoutput,fieldnames = fieldnames) #crayon 

    writer.writeheader()  #Ecrit l'en-tête avec les fieldnames

    for row in reader:
        # write the selection logic here
        if row["role"] == "_SEED_ADMIN_ROLE":
            writer.writerow({'SuperAdmins': row['assignedToUser']})


#Selection of the second data
        for row in reader:
            print(row["primaryEmail"],superadmin)
            # write the selection logic here
            if row["primaryEmail"] == superadmin:
                if row["isEnforcedIn2Sv"] == "False" and row["isEnrolledIn2Sv"] == "False":
                    writer.writerow({'2 step authentication': "false"})

我明白了:

SuperAdmins,2 step authentication,Portée des droits
julientest@w-cdt.xyz,,
,Test,
,false,

我希望:

SuperAdmins,2 step authentication,Portée des droits
julientest@w-cdt.xyz,Test,false

我想函数writerow通过在每次使用时添加一个逗号来开始一个新行,我正在寻找一种方法来继续写入同一行。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

'writerow'方法写入一整行。因此,当您连续有多个单元格时,您只需要将整行写入一次(而不是现在执行的两次)。

简单的解决方案是定义一个变量(可能称为row_dict),用所有信息逐渐填充它,然后在循环结束时使用带有变量作为参数的writerow函数。

根据您的具体代码:

function do_trader_instruments() {
  $('#stats-view-output4').bootstrapTable({
      onRefresh: function (params) {
          bpt_pie_chart();
      },
      columns: [{
          field: 'TradedInstruments',
          title: 'Traded Instruments'
      }],
      data: [{
          TradedInstruments: "<div id='instrument-chart'></div>"
      }]
  });
  bpt_pie_chart();
}