请考虑以下代码:
def scrape_data(url, wanted_list):
scraper = AutoScraper()
scraper.build(url, wanted_list)
result = scraper.get_result_similar(url, unique=False)
return result
name_result = scrape_data(url, ["names"])
previous_name = []
with open("name.csv", "r", encoding="utf-8") as name_file:
reader = csv.reader(name_file)
for row in reader:
try:
i = 0
while True:
previous_name.append(row[i])
i += 1
except(IndexError):
pass
#Insert here the code to operate the subtraction
with open("new_name.csv", "w", newline="", encoding="utf-8") as file:
writer = csv.writer(file)
writer.writerow(result)
其中previous_name是列表,是name_result的副本,是列表|dict,minus a variable number of elements at the beginning,例如:
name_result = ["James", "Robert", "John", "Michael", "James", "Barbara", "Jessica"]
previous_name = [ "John", "Michael", "James", "Barbara", "Jessica"]
我想要一个减法,它将这些第一个元素输出为变量result,即name_result的非重复"头",即在本例中:["James", "Robert"]
这不是基于元素的减法:previous_name中存在"James"
,但所需的输出不是["Robert"]
.
问题是,到目前为止,我所try 的只相当于元素减法(输出["Robert"]
):
set1 = set(list1)
set2 = set(list2)
set1 - set2
[x for x in list1 if x not in list2]