我有一个 CSV,像这样分开,没有标题:
epochtime,#value,#value,property=1.property=2.property=3
各个属性由句点分隔,但包含在 csv 中的单个列中。
我正在尝试运行一个包含属性列表的黑名单,以过滤特定属性。我在下面使用这个 grep 函数:
grep -vFf blacklist.txt file.csv > newfile.csv
然而它返回没有结果。当我删除其他值和纪元时间时,它完美地使我怀疑这些时期可能不是问题。
有没有办法可以忽略其他两列并仍然让它返回正确的结果?
提前致谢。我对unix很陌生。 awk 命令会更适合吗?
答案1
如果有人通过搜索偶然发现这篇文章来寻找答案。我写了一个小的 python 脚本。
import csv
import os
blacklist_dict = {}
with open("blacklist.txt", 'r') as blacklist:
for line in blacklist:
line = line.strip('\n')
blacklist_dict[line] = 0
blacklist.close()
with open('filename.csv', "r") as source_file, open('newfile.csv', "w") as target_file:
reader = csv.reader(source_file)
writer = csv.writer(target_file)
for row in reader:
if row[2] not in blacklist_dict:
writer.writerows([row])