0

我有一个 csv,其中有很多可以重复的街道。我想创建一个列表,其中只有出现的街道的值,没有任何重复。如果我没有解释自己,这是一个更好的例子:

.csv 内容 -> “street1”、“street2”、“street1”、“street1”、“street3”、“street2”

我要制作的列表->“street1”、“street2”、“street3”

这是我的代码:

def differentStreets():
    streets = ["example"]
    
    with open("streetsCSV.csv", mode="r", newline='') as csv_file:
        csv_reader = csv.reader(csv_file, delimiter=',')

        for row in csv_reader:
            if(streets.index(row[8])>=0):
                continue
            else:
                streets.append(row[8])
              

(row[8] 是找到街道值的列)

如您所见,我使用 .index() 函数来处理列表。我的想法是使用它,如果给定的索引为 0 或更大,则意味着街道已添加到应返回的列表中,因此应继续。如果它没有返回值,则街道名称将添加到我创建的列表中。问题是当我运行程序时,出现错误:“ValueError:'LINCOLN TUNNEL E SOUTH TUBE - NJ - NY'不在列表中”。我一直在寻找 .index() 函数的文档,但我找到的所有资源都没有指定如果我尝试使用列表中未找到的值该怎么做。

我想知道如何使用该功能使其工作,或者是否有另一种方法可以为程序提出解决方案。

谢谢你。

4

1 回答 1

2

您可以使用tryandexcept正如其他人已经提到的那样,mylist.index(value)如果给定值不是列表的元素,则会引发 ValueError 。

另一个稍微简单的解决方案是:

if value in mylist: 
    i = mylist.index(value)

if 语句确保该值存在于列表中,因此您不会遇到 ValueError。

于 2021-03-10T18:22:31.750 回答