Python中的For循环函数

Python中的For循环函数,python,python-3.x,csv,for-loop,Python,Python 3.x,Csv,For Loop,我试图将一些代码从我的主函数转换为一个名为read的函数,但不知怎的循环中断了,它没有通过我的csv文件。 下面是2个脚本和csv 随着学习曲线越来越陡峭,感谢您的建议和提示 ---代码如下--- 脚本“NotinFunct”将读取csv文件并返回此数据 脚本“InFunct”将读取相同的csv文件,但只返回一组数据 “NotinFunct”是 # -*- coding: utf-8 -*- import csv FILE = 'C://shared//API//NADEV-Numbers

我试图将一些代码从我的主函数转换为一个名为read的函数,但不知怎的循环中断了,它没有通过我的csv文件。 下面是2个脚本和csv

随着学习曲线越来越陡峭,感谢您的建议和提示

---代码如下---

脚本“NotinFunct”将读取csv文件并返回此数据

脚本“InFunct”将读取相同的csv文件,但只返回一组数据

“NotinFunct”是

# -*- coding: utf-8 -*-
import csv

FILE = 'C://shared//API//NADEV-Numbers_20190220-092956.csv'
NBS = {'5684', '7445477'}
NEW_NBS = {'56847', '74454773'}

def main():
    fields_route = {'Pattern', 'CalledX', 'CalledPrefix', 'CallingX', 'CallingPrefix'}
    for row in csv.DictReader(open(FILE)):
        if row['Type'] == 'RoutePattern':
            for nb in NBS:
                for field in fields_route:
                    if nb in row[field]:
                        for new in NEW_NBS:
                            if nb in new:
                                rp = row['Pattern']

                                pt = row['Partition']

                                newrp = row['Pattern'].replace(nb, new)

                                if row['CalledX'] == 'None':
                                    cedp = row['CalledX'].replace('None', '')
                                else:
                                    cedp = row['CalledX'].replace(nb, new)

                                if row['CalledPrefix'] == 'None':
                                    pced = row['CalledPrefix'].replace('None', '')
                                else:
                                    pced = row['CalledPrefix'].replace(nb, new)

                                if row['CallingX'] == 'None':
                                    cingp = row['CallingX'].replace('None', '')
                                else:
                                    cingp = row['CallingX'].replace(nb, new)

                                if row['CallingPrefix'] == 'None':
                                    pcing = row['CallingPrefix'].replace('None', '')
                                else:
                                    pcing = row['CallingPrefix'].replace(nb, new)

                                print(rp)
                                print(pt)
                                print(newrp)
                                print(cedp)
                                print(pced)
                                print(cingp)
                                print(pcing)
                                print('################')


if __name__ == '__main__':
    main()
# -*- coding: utf-8 -*-
import csv

FILE = 'C://shared//API//NADEV-Numbers_20190220-092956.csv'
NBS = {'5684', '7445477'}
NEW_NBS = {'56847', '74454773'}

def read():
    fields_route = {'Pattern', 'CalledX', 'CalledPrefix', 'CallingX', 'CallingPrefix'}
    for row in csv.DictReader(open(FILE)):
        if row['Type'] == 'RoutePattern':
            for nb in NBS:
                for field in fields_route:
                    if nb in row[field]:
                        for new in NEW_NBS:
                            if nb in new:
                                rp = row['Pattern']

                                pt = row['Partition']

                                newrp = row['Pattern'].replace(nb, new)

                                if row['CalledX'] == 'None':
                                    cedp = row['CalledX'].replace('None', '')
                                else:
                                    cedp = row['CalledX'].replace(nb, new)

                                if row['CalledPrefix'] == 'None':
                                    pced = row['CalledPrefix'].replace('None', '')
                                else:
                                    pced = row['CalledPrefix'].replace(nb, new)

                                if row['CallingX'] == 'None':
                                    cingp = row['CallingX'].replace('None', '')
                                else:
                                    cingp = row['CallingX'].replace(nb, new)

                                if row['CallingPrefix'] == 'None':
                                    pcing = row['CallingPrefix'].replace('None', '')
                                else:
                                    pcing = row['CallingPrefix'].replace(nb, new)

    return rp, pt, newrp, cedp, pced, cingp, pcing

def main():

    for test in read():
        print(test)

if __name__ == '__main__':
    main()
“未完成的”是

# -*- coding: utf-8 -*-
import csv

FILE = 'C://shared//API//NADEV-Numbers_20190220-092956.csv'
NBS = {'5684', '7445477'}
NEW_NBS = {'56847', '74454773'}

def main():
    fields_route = {'Pattern', 'CalledX', 'CalledPrefix', 'CallingX', 'CallingPrefix'}
    for row in csv.DictReader(open(FILE)):
        if row['Type'] == 'RoutePattern':
            for nb in NBS:
                for field in fields_route:
                    if nb in row[field]:
                        for new in NEW_NBS:
                            if nb in new:
                                rp = row['Pattern']

                                pt = row['Partition']

                                newrp = row['Pattern'].replace(nb, new)

                                if row['CalledX'] == 'None':
                                    cedp = row['CalledX'].replace('None', '')
                                else:
                                    cedp = row['CalledX'].replace(nb, new)

                                if row['CalledPrefix'] == 'None':
                                    pced = row['CalledPrefix'].replace('None', '')
                                else:
                                    pced = row['CalledPrefix'].replace(nb, new)

                                if row['CallingX'] == 'None':
                                    cingp = row['CallingX'].replace('None', '')
                                else:
                                    cingp = row['CallingX'].replace(nb, new)

                                if row['CallingPrefix'] == 'None':
                                    pcing = row['CallingPrefix'].replace('None', '')
                                else:
                                    pcing = row['CallingPrefix'].replace(nb, new)

                                print(rp)
                                print(pt)
                                print(newrp)
                                print(cedp)
                                print(pced)
                                print(cingp)
                                print(pcing)
                                print('################')


if __name__ == '__main__':
    main()
# -*- coding: utf-8 -*-
import csv

FILE = 'C://shared//API//NADEV-Numbers_20190220-092956.csv'
NBS = {'5684', '7445477'}
NEW_NBS = {'56847', '74454773'}

def read():
    fields_route = {'Pattern', 'CalledX', 'CalledPrefix', 'CallingX', 'CallingPrefix'}
    for row in csv.DictReader(open(FILE)):
        if row['Type'] == 'RoutePattern':
            for nb in NBS:
                for field in fields_route:
                    if nb in row[field]:
                        for new in NEW_NBS:
                            if nb in new:
                                rp = row['Pattern']

                                pt = row['Partition']

                                newrp = row['Pattern'].replace(nb, new)

                                if row['CalledX'] == 'None':
                                    cedp = row['CalledX'].replace('None', '')
                                else:
                                    cedp = row['CalledX'].replace(nb, new)

                                if row['CalledPrefix'] == 'None':
                                    pced = row['CalledPrefix'].replace('None', '')
                                else:
                                    pced = row['CalledPrefix'].replace(nb, new)

                                if row['CallingX'] == 'None':
                                    cingp = row['CallingX'].replace('None', '')
                                else:
                                    cingp = row['CallingX'].replace(nb, new)

                                if row['CallingPrefix'] == 'None':
                                    pcing = row['CallingPrefix'].replace('None', '')
                                else:
                                    pcing = row['CallingPrefix'].replace(nb, new)

    return rp, pt, newrp, cedp, pced, cingp, pcing

def main():

    for test in read():
        print(test)

if __name__ == '__main__':
    main()
csv是

Type,Pattern,Partition,Description,CalledX,CalledPrefix,CallingX,CallingPrefix,FwdAll,FwdBusyInt,FwdBusyExt,FwdNAnsInt,FwdNAnsExt,FwdNCovInt,FwdNCovExt,FwdCTIFail,FwdURegInt,FwdURegExt,ExtPNMask,Device
DirectoryNumber,875423,a_nothing_partition,a_nothing_DN,N/A,N/A,N/A,N/A,11,22,33,44,55,66,744547722,77,88,99,9898,SEP798798465143
DirectoryNumber,5684001,a_nothing_partition,None,N/A,N/A,N/A,N/A,None,None,None,None,None,None,None,None,None,None,N/A,N/A
TranslationPattern,568412,a_nothing_partition,a_nothing_tp,None,None,None,5236,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A
TranslationPattern,568411,a_nothing_partition,a_nothing_tp,None,None,875421,None,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A
TranslationPattern,744547720,a_nothing_partition,a_nothing_tp,961433,None,None,None,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A
TranslationPattern,744547721,a_nothing_partition,a_nothing_tp,None,786512,None,None,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A
TranslationPattern,47852,a_nothing_partition,a_nothing_tp,None,None,744547711,None,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A
TranslationPattern,9632,a_nothing_partition,a_nothing_tp,None,None,None,5684,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A
TranslationPattern,897435496,a_nothing_partition,a_nothing_tp,568433,None,None,None,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A
TranslationPattern,7896312145697,a_nothing_partition,a_nothing_tp,None,7445477,None,None,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A
RoutePattern,6568433,a_nothing_partition,None,None,None,None,None,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A
RoutePattern,6568434,a_nothing_partition,None,None,None,None,None,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A
RoutePattern,24132,a_nothing_partition,a_nothing_rp,None,None,7445477,None,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A
HuntPilot,568444,a_nothing_partition,a_nothing_hunt pilot,88,99,66,77,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A
CingPartyX,8787,a_nothing_partition,a_nothing_calling party X,N/A,N/A,11,744547722,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A
CedPartyX,98563,a_nothing_partition,a_nothing_called party X,N/A,N/A,568496,None,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A

read
函数只返回一组值(最后一组)。如果将函数更改为生成器,则可以获得所有值

read
函数的末尾更改为以下内容,确保将
yield
与最里面的循环块对齐:

...

if row['CallingPrefix'] == 'None':
    pcing = row['CallingPrefix'].replace('None', '')
else:
    pcing = row['CallingPrefix'].replace(nb, new)

yield rp, pt, newrp, cedp, pced, cingp, pcing
然后你会得到:

('6568433', 'a_nothing_partition', '65684733', '', '', '', '')
('6568434', 'a_nothing_partition', '65684734', '', '', '', '')
('24132', 'a_nothing_partition', '24132', '', '', '74454773', '')
main
函数更改为以下内容,以获得与
notinfunt
类似的输出:

def main():
    for test in read():
        for col in test:
            print(col)
        print('################')
输出:

6568433
a_nothing_partition
65684733




#################
6568434
a_nothing_partition
65684734




#################
24132
a_nothing_partition
24132


74454773

#################

现在还不清楚到底是什么问题。请解释问题,并将其简化为一个°事实上,代码是完整且可验证的,只是不是很小:^)