简单的python语法

时间:2014-08-29 18:46:11

标签: python

我的代码从csv文件中提取数据。我想为它添加一个标题。我很困惑把print语句放在哪里,所以它将在文件的开头(作为标题)。

import csv
import StringIO

f = open('/home/unica/app/Affinium/Campaign/partitions/partition1/scripts/runscripts/campaigns/cnyr/dev/output/CNYR_DM_TM_CAMPAIGN_WAVES.csv', 'r')

try:
reader = csv.reader(f, delimiter='|', quotechar='"')
for row in reader:
    if row[16] == "" and row[5].find('_NOEMAIL_'):
       if row[6]== 'DM':
          print(  row[17]+'|'+row[16]+'|'+row[25]+'|'+row[18]+'|'+row[20]+'|'+row[21]+'|'+row[19]+'|'+row[26]+'|'+row[27]+'|'+row[28]+'|'+row[29]+'|'+row[30]+'|'+row[31]+'|'+row[32]+'|'+row[8]+'|'+row[36]+'|'+row[35]+'|'+row[37]+'|'+row[34] )

有多个if语句,我想在每个case之前使用标题。所以我在打印行之前和之后放置它。我得到的结果是

PRINT_PUB_CODE,PRINT_ACCT_NUM,...
,J,8,,NUSRALA,,EDWARD...
PRINT_PUB_CODE,PRINT_ACCT_NUM,...
,J,614,,BACAL,,LEON...

所以我绝对没有要求这个。看看它是每行搜索并返回它每次循环结束。任何想法如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

  1. 请在try:之后缩进代码以使程序正常运行;)

  2. 打印标题行的正确位置就在包含try:

  3. 的行之前
  4. 我假设您希望以表格方式打印数据,即整齐排列,以便+'|'+形成垂直线。请探讨有关此问题的string.format方法。在您完成后,我假设您的代码看起来像print( "{0:<30s}|...".format(row[17],...) )。请check the manual这是如何运作的。

  5. 您的计划不会&#34;编辑&#34; csv以任何方式,但只是整齐地打印其内容。如果您希望过滤并重新排列该文件中的字段,可以考虑使用awk