python中的If-Else:返回到前面的循环
我试图根据键的名称将键附加到其他键上,但当我遍历if row.has_key(ft_test)语句时,如果该行没有来自ft_test的值,它不会附加,并继续执行下一个if语句。我想让代码返回fieldMap.keys()行中的for ft。有没有其他的说法来证明这一点,还是我没有希望python中的If-Else:返回到前面的循环,python,if-statement,Python,If Statement,我试图根据键的名称将键附加到其他键上,但当我遍历if row.has_key(ft_test)语句时,如果该行没有来自ft_test的值,它不会附加,并继续执行下一个if语句。我想让代码返回fieldMap.keys()行中的for ft。有没有其他的说法来证明这一点,还是我没有希望 #!/usr/bin/env python import sys import csv import glob fieldMap = {'zipcode':['Zip5', 'zip9','zipcode'
#!/usr/bin/env python
import sys
import csv
import glob
fieldMap = {'zipcode':['Zip5', 'zip9','zipcode','ZIP','zip_code','zip','ZIPCODE'],
'firstname':['firstname','FIRSTNAME'],and insert
'lastname':['lastname','LASTNAME'],
'cust_no':['cust_no','CUST_NO'],
'user_name':['user_name','USER_NAME'],# the keys here are ft
'status':['status','STATUS'],# status must be filled
'cancel_date':['cancel_date','CANCEL_DATE'],
'reject_date':['REJECT_DATE','reject_date'],
'streetaddr':['streetaddr','address2','STREETADDR','ADRESS2','ADDRESS','address'],
'streetno':['streetno','STREETNO'],
'streetnm':['streetnm','STREETNM'],
'suffix':['suffix','SUFFIX'],
'city':['city','CITY'],
'state':['state','STATE'],
'phone_home':['phone_home','PHONE_HOME'],
'email':['email','EMAIL']
}
def readFile(fn,ofp):
count = 0
CSVreader = csv.DictReader(open(fn,'rb'), dialect='excel', delimiter=',')
for row in CSVreader:
count+= 1
if count == 1:
hdrlist = []
for ft in fieldMap.keys():
hdrlen = len(hdrlist)
for ft_test in fieldMap[ft]:
if row.has_key(ft_test):
hdrlist.append(ft_test)
if hdrlen != len(hdrlist)+1:
print "Cannot find a key for %s" % ft
sys.exit(1)
添加
break
关键字:
hdrlen = len(hdrlist) # hdrlen equals the number of headers in header list
for ft_test in fieldMap[ft]:# ft_test = values of keys in field map
if row.has_key(ft_test): # if a row has a key from the values from fieldMap # why does it stop after testing only one key??????????????
hdrlist.append(ft_test)
break
当
如果
的大小写为True
时,它将中断
内部for循环
此代码在我看来非常不可读。使用中断
退出内部循环loop@CyberneticTwerkGuruOrc“太多评论会扼杀评论”的完美例子.一个建议:将制表位/间距设置为4,而不是8。