我对这个看似简单的问题很感兴趣,但我被困住了!好吧,我必须建立一个函数,我收到一个类别列表:
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个)项目的列表。如果此列表(=此项目组合)已经不在文件中,您想要将列表(而不是单独的项目!)添加到文件中? -
答案 0 :(得分:0)
问题很简单。如果它适合您,您可以采取以下方法:
您可以从以下示例代码开始:
# 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
请使用此代码作为起点,而不是复制粘贴解决方案。