【发布时间】:2016-09-16 20:47:52
【问题描述】:
我是 Python 新手,希望能获得有关如何解决此问题的帮助。这是我正在尝试做的事情:
- 读取包含交易列表的 CSV 文件。每行有 6 列。
对于每一行,将
DESCRIPTION列与关键字列表进行比较,以查看是否有任何单词与关键字列表中的一个匹配。|Col0 | Col1 | Col2 | Col3 "DESCRIPTION" | Col4 | Col5 "CATEGORY"|如果任何单词与关键字列表中的某些内容匹配,请将
CATEGORY列替换为与该特定关键字列表对应的新条目(例如"Groceries")。- 继续浏览每一行,将其与几个关键字列表进行比较。如果匹配,请将每行中的第 5 列 (
CATEGORY) 替换为相应的值。 - 保存到新的 CSV 文件。
这是我目前所拥有的:
import csv
grocery_keyword = ['GIANT', 'SAFEWAY', 'KROGER']
with open('Trans.csv') as csvFile:
reader = csv.reader(csvFile, delimiter=",")
my_list = list(reader)
for row in my_list:
for index, item in enumerate(row):
if any grocery_keyword in row:
row[index] = item.replace("", "Grocery")
newCSVFile = 'newCSVFile.csv'
with open(newCSVFile, "w") as output:
writer = csv.writer(output, delimiter=",", quotechar='"',
quoting=csv.QUOTE_MINIMAL, lineterminator='\n')
writer.writerows(my_list)
csvFile.close()
在这里使用列表是否正确?列和关键字列表的对比应该怎么做?
【问题讨论】:
-
如果描述类别匹配多个关键字,您希望在 CATEGORY 中得到什么?
-
好问题,我还没有考虑这么远。我计划让列表具有互斥的关键字。对于与关键字不匹配的其余行,我将不得不手动对其进行排序。