Django Postgres替换函数

ma8fv8wu  于 2023-02-17  发布在  Go
关注(0)|答案(2)|浏览(112)

我希望查找所有字符串,但放弃不需要的字符。
我有以下几行:

test!

t!est

!t!e!st!

aaa!

我想找到所有的test(但删除所有不需要的字符)。从上表中我想得到

test!

t!est

!t!e!st!

Table.objects.filter(name=test_or_test_with some_unwanted_symbols).
我不知道如何在这里应用Django FFunc

kmpatx3s

kmpatx3s1#

你可以使用Django Replace函数(在Django 2.1中引入)[docs].
对于您的示例,您可能希望在注解中使用它:

>>> from django.db.models import Value
>>> from django.db.models.functions import Replace
>>>
>>> Thing.objects.create(name='test!')
>>> Thing.objects.create(name='t!est')
>>> Thing.objects.create(name='!t!e!st!')
>>> Thing.objects.create(name='aaa!')
>>>
>>> things = thing.objects.annotate(
>>>     clean_name=Replace('name', Value('!'), Value(''))
>>> )
>>> things.filter(clean_name='test').values("name")
<QuerySet [{'name': 'test!'}, {'name': 't!est'}, {'name': '!t!e!st!'}]>
quhf5bfb

quhf5bfb2#

我建议在这里使用regex

import re
a=['test!','t!est','!t!e!st!','aaa!']
for i in a:
    k=re.sub(r"\W", "", i)
    if 'test' in k:
        print (k)

相关问题