【发布时间】:2016-01-11 19:43:16
【问题描述】:
我对 Python 还很陌生(最近两周才开始学习),我正在尝试编写一个脚本来解析一个 csv 文件以将一些字段提取到一个列表中:
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 子句之后立即进入我的代码——我可以验证“Switchport”(IF 子句中的第一个语句)已成功填充了我的 csv 文件中的 Str,如以及“开关”和“标签”。但是,由于某种原因,“natList”没有附加从我的 csv 的每一行解析的字段。 Python 不返回任何错误——只是根本不附加“natList”。
这实际上将是一个函数(一旦我让代码本身工作),但现在,我只是将函数参数设置为全局变量,以便能够在 iPython 控制台中运行它而无需必须调用函数。
“lbl”、“sw”、“swpt”、“cd”和“pt”指的是我的 csv 中的列#(完成的函数将允许用户输入这些变量的值)。
我假设我在“natList”范围内遇到了一些问题——但我尝试将“natList = []”语句移动到我的代码中的不同位置,但无济于事。
我可以在控制台中运行上述内容,然后单独运行“append.natList([Switch,Switchport,Label])”,它出于某种原因可以工作......?
感谢您的帮助!
【问题讨论】:
-
只是一个建议.. 您可能应该在您的帖子中添加一个 python 标签,以便人们更有可能看到它。我通常只是浏览包含特定标签的帖子。可悲的是,我对 python 几乎一无所知——但。希望你能找到答案。
-
谢谢!这个网站的新手......
-
我也没有问题 - 如果他们认为您没有正确发布,会有很多人告诉您如何发布 :) 将其视为帮助。有时他们也可以很直率。不要读太多。顺便说一句,在这里试试 .. stackoverflow.com/help ;-)
标签: python list if-statement append