因此,我已经转向本网站上的天才。
我希望能够做的是拥有两个单独的csv文件。其中一个有一堆商店名称,另一个有黑名单商店。
我希望能够运行一个python脚本来读取列出的黑色' sheet,然后检查这些特定名称是否在另一个工作表内,如果是,则从主工作表中删除它们。
我已经尝试了大约两天,并且不能让我的生活得到它的工作。所以我来找你们帮助我。
非常感谢。
p.s如果你可以对剧本中的内容发表评论,那么我知道发生了什么,我们将不胜感激。
编辑:我删除了原来的代码,但希望这会让你知道我想要做什么。 (我也意识到这完全不正确)import csv
with open('Black List.csv', 'r') as bl:
reader = csv.reader(bl)
with open('Destinations.csv', 'r') as dest:
readern = csv.reader(dest)
for line in reader:
if line in readern:
with open('Destinations.csv', 'w'):
del(line)
答案 0 :(得分:0)
您需要注意的第一件事是您无法更新您正在阅读的文件。文本文件(包括.csv文件)不会那样工作。因此,您必须将整个Destinations.csv
读入内存,然后以新名称再次写出来,但跳过您不想要的行。 (你可以覆盖你的输入文件,但你会很快发现这是一个坏主意。)
import csv
blacklist_rows = []
with open('Black List.csv', 'r') as bl:
reader = csv.reader(bl)
for line in reader:
blacklist_rows.append(line)
destination_rows = []
with open('Destinations.csv', 'r') as dest:
readern = csv.reader(dest)
for line in readern:
destination_rows.append(line)
现在,此时您需要遍历destination_rows
并删除与blacklist_rows
中匹配的内容,并写出其余部分。我无法建议匹配测试应该是什么样子,因为您还没有向我们展示您的输入数据,因此我实际上并不知道blacklist_rows
和destination_rows
包含
with open('FilteredDestinations.csv', 'w') as output:
writer = csv.writer(output)
for r in destination_rows:
if not r: # trap for blank rows in the input
continue
if r *matches something in blacklist_rows*: # you have to code this
continue
writer.writerow(r)
答案 1 :(得分:0)
你可以尝试Pandas
import pandas as pd
df1 = pd.read_csv("Destinations.csv")
df2 = pd.read_csv("Black List.csv")
blacklist = df2["column_name_in_blacklist_file"].tolist()
df3 = df2[~df2['destination_column_name'].isin(blacklist)]
df3.to_csv("results.csv")
print(df3)