我需要解析csv的每一行,并通过匹配现有列是否与模式匹配来添加新列。例如,如果columnA以字符串elephant
开头,那么我将添加一个名为Mammal
的新列。
所以,文件就像
uid datetime description
1 2015-09-01 an elephant has trunks
2 2015-08-31 there are sharks in the sea
因此,我想搜索description
列并添加一个名为animal
的新列,该列将标识我们正在讨论的动物类型。所以,新的csv将是
uid datetime description animal
1 2015-09-01 an elephant has trunks mammal
2 2015-08-31 there are sharks in the sea fish
这是一个相当简化的例子,但我基本上需要为动物类型和描述创建一个查找。
编辑:我已经添加了一个问题示例。
答案 0 :(得分:4)
您可以将查找表设为字典。
beasts["otter"] = "mammal"
beasts["porgy"] = "fish"
你可能也想添加复数。
beasts["porgies"] = "fish"
beasts["foxes"] = "mammal"
然后你只需要将描述拆分为单词,查找词典中的单词,并按找到的第一个单词对描述进行分类:
for word in description.split():
if word in beasts:
classification = beasts[word]
break
else:
print("Unclassified")
请注意,这是一个循环else
。它需要缩进到与for
相同的级别。我不太喜欢循环,因为如果循环变长,很容易让缩进错误,并且很难找到错误,但如果循环很短,就像上面的例子一样,它们很棒。如果你需要在循环中做的比我演示的更多,你可能想要替换不同的结构。 (另外,“野兽”显然是这个词的烂名。想想更好的一个,请。)