Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中从子列表获取元素_Python_List - Fatal编程技术网

在Python中从子列表获取元素

在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

我有一个.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_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,结果仍然存在:(