Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.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中存储打印返回数据_Python_Csv - Fatal编程技术网

在Python中存储打印返回数据

在Python中存储打印返回数据,python,csv,Python,Csv,我是python的业余爱好者。我有这个密码 import csv csv.register_dialect('piper', delimiter='|', quoting=csv.QUOTE_NONE) with open('temp1.txt','rb') as csvfile: for row in csv.DictReader(csvfile, dialect='piper'): print row['ICS_ORIG_STRT_DT'] print row['EDW_F

我是python的业余爱好者。我有这个密码

import csv
csv.register_dialect('piper', delimiter='|', quoting=csv.QUOTE_NONE)
with open('temp1.txt','rb') as csvfile:

for row in csv.DictReader(csvfile, dialect='piper'):
    print row['ICS_ORIG_STRT_DT']
    print row['EDW_FIRST_OUT_IFP_DT']
    print row['STATE_PROVINCE']
    print row['EFFORT_TYPE']
    print ''
现在我想运行一个
if
语句来检查
efforce\u TYPE
中的数据是否为
'TM'
。如果
efforce\u TYPE
返回
'TM'
我想将一些行连接在一起。数据集如下。对于
if
语句,我有一个抛出错误的语句

abc = str( [print row['EFFORT_TYPE']])

if abc == 'TM':
    print (row['PRINT_ACCT_NUM']row['CURR_DT'])
else:
    print (row['FIRST_NAME']row['LAST_NAME'])
这是输入文件的开头:

SEQ_NUM|ICS_ORIG_STRT_DT|EDW_FIRST_OUT_IFP_DT|CURR_DT|DEV_GE_NUM_DAYS|DEV_LE_NUM_DAYS|FILENAME|CAMPAIGN_NAME_DESC|CAMPAIGN_WAVE|MARKET_SEGMENT|CAMPAIGN_NAME|CAMPAIGN_WAVE_RUN|EFFORT_TYPE|EFFORT_NUM|UU_ID|PRINT_ACCT_NUM|PRINT_PUB_CD|PREFIX|SUFFIX|FIRST_NAME|LAST_NAME|EMAIL|PHONE_NUM|BUS_PHONE|CO_NAME|STREET_NUM|ADDR|ADDR2|CITY|STATE_PROVINCE|ZIP_POSTAL|ZIP4|TRACK_CD|VANITY_URL|BILL_FORM|LETTER_TEXT|OUTER
130|20140401|00010101|20140728|85||Apr14WSJ_CNYR_NOEMAIL_CAP_TM_20140728.txt|Apr14WSJ_CNYR_NOEMAIL_CAP_TM|WSJ_CNYR_NOEMAIL_CAP_TM|CNYR|WSJ_CNYR_NOEMAIL_CAP|Apr14|TM|||032714296269|J|||ARTHUR|MURPHY||9784255147|||46|LANTERN###WAY||SHIRLEY|MA|01464|2136|aaqecw0c||||

在本例中,您不需要打印——它只打印输出,但不转换为字符串。在Python 2中,它是一个关键字,因此这是无效语法。在Python 3中,它是一个返回
None
的函数,因此在您的情况下(除了缺少一些括号导致语法错误外),它会将
abc
设置为
“[None]”
,这可能不是您想要的。只要使用
str
转换为字符串,如果它还不是字符串(在您的例子中是)。然后,可以使用
+
连接行:

abc = row['EFFORT_TYPE']
if abc == 'TM':
    print(row['PRINT_ACCT_NUM'] + row['CURR_DT'])
else:
    print(row['FIRST_NAME'] + row['LAST_NAME'])

在这种情况下,您甚至不需要使用
abc
,并且可以将
如果abc=='TM':
替换为
如果行['efforce\u TYPE']=='TM':

,您可以直接将
行['efforce\u TYPE']
'TM'
进行比较,并使用
+
进行字符串连接:

if row['EFFORT_TYPE'] == 'TM':
    print (row['PRINT_ACCT_NUM'] + row['CURR_DT'])
else:
    print (row['FIRST_NAME'] + row['LAST_NAME'])

您需要缩进if语句中的代码,并将条件更改为
如果abc中的“TM”为

abc = str(row['EFFORT_TYPE'])
if 'TM' in abc:
    print(row['PRINT_ACCT_NUM']+row['CURR_DT'])
else:
    print(row['FIRST_NAME']+row['LAST_NAME'])

哦,天哪,你真的需要包含所有这些文本吗?我不读它,因为它就像技术问题的垃圾邮件。不是OP是否需要它,它是无效语法。它是一个缩进块引发的错误。正在打印。什么错误?这应该适用于Python2和Python3。如果是
键错误
(我个人猜测),那是因为
行[“键”]
(用失败的键替换
)不存在。这可能是您的数据或加载数据的方式有问题。这会引发一个错误:应为缩进块。print语句上的错误。print(第['print\u ACCT\u NUM']+第['CURR\u DT']]行)@Rajarshi您能用错误消息更新questin吗?您的程序中有一个错误:应该是缩进块。然后在print语句上它是红色的哪一行给出了错误消息?您是否使用相同数量的空格/制表符缩进了两行打印行?这一行显示打印错误(行['print\u ACCT\u NUM']+行['CURR\u DT'])实际上有空格修复了它。