Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中为每个if语句创建单独的头_Python - Fatal编程技术网

在Python中为每个if语句创建单独的头

在Python中为每个if语句创建单独的头,python,Python,我的代码从csv文件中提取数据。我想给它添加一个标题。我不知道该将print语句放在哪里,因此它将位于文件的开头(作为标题) 有多个if语句,我想在每个case之前加上header。所以我把它放在if之后,然后再打印行。我得到的结果是 PRINT_PUB_CODE,PRINT_ACCT_NUM,... ,J,8,,NUSRALA,,EDWARD... PRINT_PUB_CODE,PRINT_ACCT_NUM,... ,J,614,,BACAL,,LEON... 所以我肯定不是在问这个问题。它

我的代码从csv文件中提取数据。我想给它添加一个标题。我不知道该将print语句放在哪里,因此它将位于文件的开头(作为标题)

有多个if语句,我想在每个case之前加上header。所以我把它放在if之后,然后再打印行。我得到的结果是

PRINT_PUB_CODE,PRINT_ACCT_NUM,...
,J,8,,NUSRALA,,EDWARD...
PRINT_PUB_CODE,PRINT_ACCT_NUM,...
,J,614,,BACAL,,LEON...
所以我肯定不是在问这个问题。它似乎在搜索csv文件中的每一行,并在每次循环时返回“PRINT\u PUB\u CODE,PRINT\u ACCT\u NUM,…”。知道如何解决这个问题吗

csv文件如下所示

SEQ_NUM|ICS_ORIG_STRT_DT|EDW_FIRST_OUT_IFP_DT|...
119|20140602|00010101|20140818|0|21...
119|20140602|00010101|20140818|0|21...
PRINT_PUB_CODE,PRINT_ACCT_NUM,...
,J,8,,NUSRALA,,EDWARD...
,J,614,,BACAL,,LEON...
我要的订单也是这样的

SEQ_NUM|ICS_ORIG_STRT_DT|EDW_FIRST_OUT_IFP_DT|...
119|20140602|00010101|20140818|0|21...
119|20140602|00010101|20140818|0|21...
PRINT_PUB_CODE,PRINT_ACCT_NUM,...
,J,8,,NUSRALA,,EDWARD...
,J,614,,BACAL,,LEON...

只需在
for
循环之前打印标题:

reader = csv.reader(f, delimiter='|', quotechar='"')
print(my_header)
for row in reader:
    do_stuff(row)
如果标题基于CSV文件的第一行,请分别读取第一行:

reader = csv.reader(f, delimiter='|', quotechar='"')
header = next(reader)
do_header_stuff(header)
for row in reader:
    do_stuff(row)

同时,如果您需要
csv
模块来读取文件,您几乎肯定需要
csv
模块来写出处理过的版本(如果需要)。否则,您将首先破坏需要
csv
模块的完全相同的引用、转义等

而且,即使您实际上不需要它,它也会使您的代码更加简单

例如,在这两行中查找错误:

print(  row[17]+'|'+row[16]+'|'+row[25]+|'+row[18]+'|'+row[20])

writer.writerow((row[17], row[16], row[25, row[18], row[20]))

它正在为每个循环迭代打印它。尝试将其移动到for语句之前

print('PRINT_PUB_CODE,PRINT_ACCT_NUM,CO_NAME,...
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]+'|'....
        elif row[6]== 'TM':
            print(  row[17]+'|'+row[16]+'|'+row[25]+'|'+row[18]+'|'+row[20]+'|'....

请修正你的缩进;要么去掉
try
,要么添加相应的
,除了
最后添加
;修复错误的报价和缺少的参数;等等。你给我们看的代码实际上不会运行,甚至不会编译,它运行并向我提供了我不同意的输出。请不要担心缩进。帮助我理解为什么会发生缩进。@Rajarshi:帮助我们帮助你…泰。我跳入python,如果你能解释一下的话。对我来说,标题是打印的('PRINT_PUB_CODE,PRINT_ACCT_NUM,CO_NAME,…)我想在每个if语句之前包含它。这样,当特定if语句满足我的数据时,它将返回特定PRINT语句的数据。希望它能帮上忙。@Rajarshi:我想在阅读了该描述后,我对您的问题的理解比以前少了。这正是我们为什么想要一个。编辑你的问题,给我们一个精简的、最少的例子,包括输入、期望的输出和实际的输出,然后我们可以告诉你如何更改它。没有这些,我们只是猜测。@Rajarshi:你的更新仍然没有可编译的代码。而且,我仍然不明白rjbman或我的答案是如何不足的,因为y都会生成您想要的输出。请更正,每次迭代都会打印。但是每个if语句的打印语句都不同,我有多个if语句。因此,当特定if语句满足我的数据时,它将返回数据,并在其顶部显示特定的打印语句。@Rajarshi您想停止吗一旦到达每一行?如果是这样,您可能正在查找
break
。我尝试将break和continue放在一起。同时,我将带有break和continue标题的print语句放在一起。它仍然在打印。代码正在运行。如果行[12]='DM':break print('print\u PUB\u code,print\u act\u NUM…continue print(行[17]“+”、“+行(16)+”、“……我建议通过Python文档阅读,这样你就可以准确地知道它们是如何工作的。调试代码没有正确的格式是很困难的,所以你可能想考虑更新你的帖子(用正确的格式)。我这样做了。代码在运行,但是没有显示打印的语句。如果行[21 ] = =”和第[7]行。查找('NOEMAIL'):如果第[12]行='DM':中断打印('print_PUB_代码、print_ACCT_NUM、CO_名称…继续打印('17]+'、'+row[16]+'、'+row[25]+elif row[12]='TM':中断打印('print PUB_代码、print_ACCT_NUM、CO…等等)