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

2024-06-02 09:07:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要解析csv的每一行,并通过匹配现有列是否与模式匹配来添加新列。例如,如果column a以字符串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

这是一个相当简单的示例,但我实际上需要创建一个动物类型和描述的查找。

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


Tags: csvtheinanuiddatetimedescriptionare
1条回答
网友
1楼 · 发布于 2024-06-02 09:07:02

你可以把你的查找表做成一个dict

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相同的级别。我不太喜欢loop else,因为如果循环变长,缩进很容易出错,而且很难找到bug,但是如果循环很短,就像上面的例子一样,它们很好。如果您需要在循环中执行比我演示的更多的操作,则可能需要替换其他构造。(另外,“野兽”显然是个烂名字,请想一个更好的名字。)

相关问题 更多 >