在Python中从子列表获取元素
我有一个.csv文件,其中包含以下4行元素:在Python中从子列表获取元素,python,list,Python,List,我有一个.csv文件,其中包含以下4行元素: dev1, NX-OS, 10.0.0.1, admin, admin dev2, NX-OS, 10.0.0.2, admin, admin dev3, NX-OS, 10.0.0.3, admin, admin dev4, NX-OS, 10.0.0.4, admin, admin 我试图提取任何元素。为了做到这一点,我有以下几点: import csv dev_list=[] infile=open('dev_in.csv','r') csv
dev1, NX-OS, 10.0.0.1, admin, admin
dev2, NX-OS, 10.0.0.2, admin, admin
dev3, NX-OS, 10.0.0.3, admin, admin
dev4, NX-OS, 10.0.0.4, admin, admin
我试图提取任何元素。为了做到这一点,我有以下几点:
import csv
dev_list=[]
infile=open('dev_in.csv','r')
csv_in=csv.reader(infile)
for dev in csv_in:
dev_list.append(dev)
dev_list
的结果是以下列表:
[
['dev1, NX-OS, 10.0.0.1, admin, admin'],
['dev2, NX-OS, 10.0.0.2, admin, admin'],
['dev3, NX-OS, 10.0.0.3, admin, admin'],
['dev4, NX-OS, 10.0.0.4, admin, admin']
]
为了提取第一个列表的第一个元素,我编码:
element=dev_list[0]
print(element[0])
但是,我得到了完整的第一个列表:
dev1, NX-OS, 10.0.0.1, admin, admin
也许我应该使用“split”函数将其拆分,但我认为这会不必要地扩展代码。我需要提取每个子列表的第一个元素。但是,我可能需要稍后提取其他元素
还有别的办法吗?还有没有更好的方法来编写这段代码,可能是通过列表理解提前感谢。总结我的评论,下面是您需要做的事情(记住Python 3):
导入csv
从pathlib导入路径
dev_in=Path('dev_in.csv'))
devs=list(csv.reader(dev_in.open(),skipinitialspace=True))
对于开发人员中的开发人员:
#打印开发人员名称
打印(开发人员[0])
上述代码将给出以下行作为输出:
dev1
dev2
dev3
dev4
以下是概念证明:
Python 3.7.5(默认值,2019年12月15日,17:54:26)
linux上的[GCC 9.2.1 20190827(Red Hat 9.2.1-1)]
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>导入csv
>>>从pathlib导入路径
>>>dev_in=Path('dev_in.csv'))
>>>
>>>devs=list(csv.reader(dev_in.open(),skipinitialspace=True))
>>>开发人员
[['dev1',NX-OS',10.0.0.1',admin',admin'],['dev2',NX-OS',10.0.0.2',admin',admin',admin'],['dev4',NX-OS',10.0.0.4',admin admin admin']
>>>dev=devs[0]
>>>发展
['dev1','NX-OS','10.0.0.1','admin','admin']
>>>开发人员[0]
“dev1”
>>>
我希望它能有所帮助。除非
csv
有办法处理分隔符,否则现在正是使用split
的时候。它只会添加一行。为什么不使用Pandas来读取csv文件?您根本不需要split()
,csv.reader()
已经这样做了。您需要将代码更改为类似于devs=list(csv.reader(open('dev_in.csv'),skipinitialspace=True))
。然后,devs
将是一个列表列表,因此,为了获得dev名称,例如,您在devs:print(dev[0])中对dev执行。您在问题上发布的结果列表不是您从发布的代码中获得的。@accdias我再次检查了代码,这就是我得到的。你有什么不同吗?谢谢你的回复。然而,我得到了同样的错误。我从您的devs
中得到的列表如下:[['dev01,NX-OS,10.0.0.1,admin,admin'],['dev02,NX-OS,10.0.0.2,admin,admin'],['dev03,NX-OS,10.0.0.3,admin,admin'],['dev04,NX-OS,10.0.0.4,admin,admin']
。我可以看到我的列表中的每个元素都没有你的引号,这让你可以选择所需的元素。这与我从dev_列表
中的代码中得到的列表完全相同。也许这与你的csv
模块有关。这里我使用的是csv.\uuuu版本\uuu
1.0
。我也使用的是1.0版本。因此,您的Python安装肯定有问题:-(我不太确定。目前我正在Pycharm for Windows上运行Python 3.8.1(最新版本)。我还尝试了常规Python Shell。我在另一台计算机上也做了同样的操作,但总是出现相同的错误。我也尝试了Python 3.7,结果仍然存在:(