尝试构建一种扫描大块文本的方法,以便在Django中找到匹配的各行。
让我说我有这样的文字:
我的朋友乔博格斯和彼得史密斯正在建造沙堡 他们的朋友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)
我想将该组文本与此数据中的项目进行比较。
需要匹配:
Joe Bloggs
彼得史密斯Jane Doe
本杰明
(名称可以是1-5个单词的长度 - 尽管它们都存储在同一行中)
我该怎么做?我需要该函数来返回它在文本中找到的人员ID列表。
尝试过各种各样的事情,例如在每次休息时拆分单词,进行部分匹配,然后看看下面的单词是否相同并且继续,但我所做的一切都感觉笨拙而没有按预期工作
由于
答案 0 :(得分: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) )