其他分享
首页 > 其他分享> > 嵌套在IF语句主体内部的附加函数不起作用

嵌套在IF语句主体内部的附加函数不起作用

作者:互联网

我刚接触Python(最近两周才开始学习),并且正在尝试编写脚本来解析csv文件以将某些字段提取到List中:

from string import Template
import csv
import string

site1 = 'D1'
site2 = 'D2'
site3 = 'D5'
site4 = 'K0'
site5 = 'K1'
site6 = 'K2'
site7 = '0'
site8 = '0'
site9 = '0'
lbl = 1
portField = 'y'
sw = 5
swpt = 6
cd = 0
pt = 0
natList = []
with open(name=r'C:\Users\dtruman\Documents\PROJECTS\SCRIPTING - NATAERO DEPLOYER\NATAERO DEPLOYER V1\nataero_deploy.csv') as rcvr:
    for line in rcvr:
        fields = line.split(',')
        Site = fields[0]
        siteList = [site1,site2,site3,site4,site5,site6,site7,site8,site9]
        while Site in siteList == True:
            Label = fields[lbl]
            Switch = fields[sw]
            if portField == 'y':
                Switchport = fields[swpt]
                natList.append([Switch,Switchport,Label])
            else:
                Card = fields[cd]
                Port = fields[pt]
                natList.append([Switch,Card,Port,Label])
print natList

即使我剥夺了ELSE语句并在IF子句之后立即进入我的代码,我也可以验证是否已成功将csv文件中的Str填充到“ Switchport”(IF子句中的第一条语句)以及“切换”和“标签”.但是,出于某些原因,没有将“ natList”附加到从我的csv的每一行中解析的字段. Python不返回错误-根本不附加“ natList”.

实际上,这将是一个函数(一旦我使代码本身可以工作),但是现在,我只是将函数参数设置为全局变量,以便能够在iPython控制台中运行它而不必调用功能.

“ lbl”,“ sw”,“ swpt”,“ cd”和“ pt”指的是我的csv中的列号(完成的功能将允许用户输入这些变量的值).

我以为我遇到了“ natList”范围的问题-但我尝试将“ natList = []”语句移到代码中的各个地方都无济于事.

我可以在控制台中运行以上命令,然后分别运行“ append.natList([Switch,Switchport,Label])”,由于某些原因,它可以工作.

感谢您的协助!

解决方法:

似乎while条件需要附加括号.只需以这种方式添加一些内容,而(siteList中的Site)== True:或Padraic在SiteList中的Site中建议的更简洁的方法.

它正在将布尔对象与字符串对象进行比较.

标签:list,if-statement,append,python
来源: https://codeday.me/bug/20191119/2037333.html