0

尝试构建一种方法,针对在 Django 中找到匹配的单个行扫描大块文本。

可以说我有这个文本:

我的朋友 Joe Bloggs 和 Peter Smith 正在和他们的朋友 Jane Doe 以及他们的狗 Benjamin 建造一座沙堡

我想扫描该文本并将名称与我正在存储的一组“人”数据相匹配。这是我的人物模型:

class Artist(models.Model):
    name = models.CharField(max_length=255)
    slug = models.SlugField(max_length=100)
    biog = models.CharField(max_length=255)

我想将该组文本与该数据中的项目进行比较。

它需要匹配:

乔·博格斯

彼得·史密斯

简·多伊

本杰明

(名称的长度可以是 1-5 个单词 - 但它们都存储在同一行中)

我该怎么办?我需要该函数返回它在文本中找到的人员 ID 列表。

尝试了各种方法,例如在每次休息时拆分单词,进行部分匹配,然后查看下一个单词是否相同并继续,但我所做的一切都感觉很笨拙并且没有按预期工作

谢谢

4

1 回答 1

1

假设您的艺术家是一个包含他们的 id 和全名的元组列表(如果您的艺术家在另一个结构中,您可以轻松地转换它)。

artists = [ (1, 'Joe Bloggs'), (2, 'Peter Smith'), (3, 'Jane Doe'), (4, 'Benjamin') ]
t = 'Joe Bloggs\'s dog is called Benjamin. Peter Fuller and John Doe are two unkown persons.'

def findArtists (artists, text):
    return [aid for aid, name in artists if name in text]

print (findArtists (artists, t) )
于 2013-08-06T17:53:13.667 回答