我的代码从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...
所以我绝对没有要求这个。看看它是每行搜索并返回它每次循环结束。任何想法如何解决这个问题。
答案 0 :(得分:0)
请在try:
之后缩进代码以使程序正常运行;)
打印标题行的正确位置就在包含try:
我假设您希望以表格方式打印数据,即整齐排列,以便+'|'+
形成垂直线。请探讨有关此问题的string.format
方法。在您完成后,我假设您的代码看起来像print( "{0:<30s}|...".format(row[17],...) )
。请check the manual这是如何运作的。
您的计划不会&#34;编辑&#34; csv以任何方式,但只是整齐地打印其内容。如果您希望过滤并重新排列该文件中的字段,可以考虑使用awk