Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.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_Enumerate - Fatal编程技术网

Python 使用枚举

Python 使用枚举,python,enumerate,Python,Enumerate,因此,在过去的几天里,我刚开始学习python,除了5年前的一些基本编码知识外,什么都没有。 我恋爱了 我正在导入一个.csv文件,其中包含按二元排序的历史联盟…因此每个联盟都有一个特殊的编号。同一个国家的档案中还有很多。 我正在尝试让用户提供一个国家和日期,并能够返回他们当年与之结盟的国家。 这是一行数据 6 200 United Kingdom 255 Germany 1 1 1816 31 10 1822 1 0 1 0 0 1 0 6 200 United Kingdom 300 Au

因此,在过去的几天里,我刚开始学习python,除了5年前的一些基本编码知识外,什么都没有。 我恋爱了

我正在导入一个.csv文件,其中包含按二元排序的历史联盟…因此每个联盟都有一个特殊的编号。同一个国家的档案中还有很多。 我正在尝试让用户提供一个国家和日期,并能够返回他们当年与之结盟的国家。 这是一行数据

6 200 United Kingdom 255 Germany 1 1 1816 31 10 1822 1 0 1 0 0  1 0
6 200 United Kingdom 300 Austria-Hungary 1 1 1816 31 10 1822 1 0 1 0 0 1 0
第一个数字是二元数,然后是国家代码和国家,国家代码和国家,联盟开始的日期,月份,年份,结束的日期,月份,年份。 最后的部分并不重要

import csv
name='United Kingdom'
diad = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']
with open('list.csv') as inputfile:
    r = list(csv.reader(inputfile))
    for i, j in enumerate(r):
         if j == name:
              diad[0]=name
          print "true"
              diad.insert(0, name)
我运行它却什么也得不到,所以if语句不是真的。。。
我不明白怎么回事。您正在查看前两行数据,不应该枚举查找“联合王国”的任何实例并将其插入diad列表中吗?如果我能完成这项工作,我的任务应该很简单。

在CSV中迭代只会迭代行,而不是列。因此,在每次迭代中,
j
是一个列列表。然后还需要遍历
j
中的元素,以便与字符串进行比较


我想你对
enumerate
的作用感到困惑。事实上,你根本不需要它。它所做的是为您提供一个索引以及您正在枚举的对象的值。在这种情况下,第一次迭代是0加第一行,然后是1加第二行,依此类推。因为您没有使用索引,所以不想使用enumerate。

Python使用空格来表示代码块。确保你是始终如一的。一般来说,最好使用四个空格作为缩进,不要使用制表符。看起来你正在使用
打印
行上的选项卡不确定为什么会出现这样的结果,我将对其进行编辑。如果我读对了。。。r是一整行。您需要
enumerate(r.split())
…因为.csv是结构化的,所以您可能只需要在特定的“国家”索引(这里看起来像2和4)中检查
name
,而不是检查行中的所有列。如果csv有标题,那么可以通过标题名而不是索引来搜索这两个字段。这是一篇糟糕的代码帖子。这是测试代码之类的,我无法解释。但是谢谢你,我刚刚意识到j[0]会返回6,6来获取上面的数据。基本上,我将每个国家手动命名为一个类,设置一个名称属性…如United_Kingdom=country(“United_Kingdom”),然后(在类的init中)迭代导入的列表以与名称冲突,然后将二元数添加到该国家的二元列表中。。。但是这个答案有帮助,谢谢。希望将来有更好的问题。万一有人读到这个。。。这也有帮助。