我的目标是编写一个遍历CSV文件并实现以下功能的函数:
CSV文件格式示例:
“ 2399”,“ 1”,“盗窃自行车”,“自行车盗窃”
例如:
输出:
我很难弄清楚如何将与关键字列表中的字符串匹配的IF语句构造到第[3]行之内。
对于这些示例,您会注意到,尽管存在自行车弦乐,但第二个示例却什么也不输出,而踏板车则没有。
我尝试过的事情:
def find_that_code(keywords):
codelist = []
keywords = str(keywords)
with open('codes.csv') as csv_file:
reader = csv.reader(csv_file, delimiter=',')
next(reader) # skip the first row
for row in reader:
if row[3] == any([x in keywords for x in keywords]):
code = row[0]
return True
else:
return False
当前,我有返回True或False的代码以找出问题所在。但是一旦我知道如何将关键字列表中的字符串与CSV的row [3]相匹配,那么我就可以完成其余部分。
感谢您的宝贵时间,我非常感谢您的建议。
答案 0 :(得分:1)
如果您要查找在描述列中出现任何个给定关键字的所有行:
def find_that_code(keywords):
codelist = []
with open('codes.csv') as csv_file:
reader = csv.reader(csv_file, delimiter=',')
next(reader) # skip the first row
for row in reader:
if any(k in row[3].lower() for k in keywords):
codelist.append(row[0])
return codelist
我试图尽可能减少您的原始帖子。但是请注意,这会根据您要执行的操作而执行得很慢,因为如果您多次调用它,则会从头开始反复读取文件,并对每个您希望匹配的关键字集重新处理它。
如果您希望定期对数据集执行此操作,则最好将数据集转储到Solr或Lucene(或某种基于文本的搜索引擎)中。