0

我正在努力解决这个看起来很简单但我被困住的问题!好吧,我必须构建一个函数,在其中接收一个类别列表,例如:

input Example1: ['point_of_interest', 'natural_feature', 'park', 'establishment']
input Example2: ['point_of_interest', 'establishment']
input Example3: ['sublocality', 'political']

因此,该列表可能包含可变元素,我猜从 1 到 4 不会更多

因此,使用相同的数据,我将使用该输入创建一个文件,如果新输入不在文件中,则将其附加到文件中。

方式是每个列表本身就是一个元素,我的意思是我必须比较列表的完整元素,如果我能找到其他完全相等的列表,我不必添加它。

在我的代码中,我只是尝试添加文件中的第一个元素,因为我真的不知道如何添加完整列表以与下一个列表进行比较。

def categories(category):
    number = 0
    repeat = False
    if os.path.exists("routes/svm/categories"):
        with open('routes/svm/categories', 'rb') as csvfile:
            spamreader = csv.reader(csvfile)
            for categoryFile in spamreader:
                if (cmp(categoryFile,category) == 0):
                    number += 1
                    repeat = True
                if not repeat:
                    categoriesFile = open('routes/svm/categories', 'a') 
                    category = str(category[0])     
                    categoriesFile.write(category) 
                    categoriesFile.write('\n')
                    categoriesFile.close()
                else:
                    categoriesFile = open('routes/svm/categories', 'w')
                    category = str(category[0])     
                    categoriesFile.write(category)
                    categoriesFile.write('\n')
                    categoriesFile.close()      

编辑:@KlausWarzecha 的一些解释:用户可能会输入一个包含(大约 4 个)项目的列表。如果此列表(= 此项目组合)不在文件中,您想将列表(而不是单独的项目!)添加到文件中吗?——</p>

4

1 回答 1

0

问题真的很简单。如果它适合您,您可以采取以下方法:

  1. 将 CSV 的所有内容读入列表
  2. 将输入中的所有不匹配项添加到此列表中
  3. 重写 CSV 文件

您可以从以下示例代码开始:

# input_list here represents the inputs
# You may get input from some other source too
input_list = [['point_of_interest', 'natural_feature', 'park', 'establishment'], ['point_of_interest', 'establishment'], ['sublocality', 'political']]
category_list = []
with open('routes/svm/categories', 'rb') as csvfile:
    spamreader = csv.reader(csvfile)
    for categoryFile in spamreader:
        print categoryFile
        category_list.append(categoryFile)
for item in input_list:
    if (item in category_list):
        print "Found"
    else:
        category_list.append(item)
        print "Not Found"

# Write `category_list` to the CSV file

请将此代码用作起点,而不是作为复制粘贴解决方案。

于 2013-06-17T11:52:29.283 回答