在Python中存储打印返回数据
我是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
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'])实际上有空格修复了它。