Python:如何为字符串匹配创建查找表

时间:2015-09-01 10:28:47

标签: python python-2.7 lookup string-matching

我需要解析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

这是一个相当简化的例子,但我基本上需要为动物类型和描述创建一个查找。

编辑:我已经添加了一个问题示例。

1 个答案:

答案 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相同的级别。我不太喜欢循环,因为如果循环变长,很容易让缩进错误,并且很难找到错误,但如果循环很短,就像上面的例子一样,它们很棒。如果你需要在循环中做的比我演示的更多,你可能想要替换不同的结构。 (另外,“野兽”显然是这个词的烂名。想想更好的一个,请。)

相关问题