小编Ani*_*rma的帖子

替换python中的确切子字符串

示例字符串: "office administration in delhi"

我想用空格替换字符串.但是,当我这样做时,s.replace('in',"")行政管理也变得空白.

这只是一个样本.字符串和要替换的单词可能会有所不同.

有没有办法只替换完全匹配?

python regex string

10
推荐指数
1
解决办法
6276
查看次数

覆盖 DRF 中序列化程序的数据属性

我正在将 django-rest-framework-mongoengine 用于个人项目。我希望能够在列表请求中发送额外的数据。为此,我编写了 2 个 mixin:

UserSearializerContextMixin:收集列表中所有实例的用户 ID 列表。

class UserSerializerContextMixin(object):
    user_lookup_field = 'user_id'
    user_fields_required = ['id','full_name','image','level']
    _user_ids = []

    def update_context(self,user_id):
        if not self.context.get('user_ids'):
            self.context['user_ids'] = [user_id]
        else:
            self.context['user_ids'].append(user_id)

    def to_representation(self,instance):
        self.update_context(getattr(instance,self.user_lookup_field))
        return super(UserSerializerContextMixin,self).to_representation(instance)
Run Code Online (Sandbox Code Playgroud)

UserSerializerDataMixin:使用在 to_representation 部分准备的上下文覆盖数据属性。

class UserSerializerDataMixin(object):

    @property   
    def data(self):

        ret = super(UserSerializerDataMixin, self).data
        // Override the data
        return ReturnDict(ret, serializer=self)
Run Code Online (Sandbox Code Playgroud)

然后对于我的序列化程序,我做这样的事情:

class DFSerializer(UserSerializerContextMixin,UserSerializerDataMixin,DocumentSerializer):
    //Fields and all
Run Code Online (Sandbox Code Playgroud)

但不知何故,代码只是没有输入覆盖的数据属性。我猜逻辑上应该通过扩展mixin来覆盖数据属性。但这不会发生在这里。

可能是什么原因以及如何解决?

python django django-rest-framework

6
推荐指数
1
解决办法
1516
查看次数

在序列化程序中获取视图的名称

我有一个serilizer.我已经覆盖to_representation了序列化器的方法.我想使用已调用序列化程序代码的视图名称.我试过以下::

self.context['view'].__class__
Run Code Online (Sandbox Code Playgroud)

这回报我以下::

<class 'search.api.v1.views.JobSearchList'>
Run Code Online (Sandbox Code Playgroud)

但是,我只想要视图类的名称.即JobSearchList

知道我怎么能这样做吗?

python django django-rest-framework

2
推荐指数
1
解决办法
599
查看次数

字典理解中的嵌套循环

我有一个现有的字典列表如下:

FA = [{u'child': [{u'cdesc': u'Audit'},
                  {u'cdesc': u'Equity Research'},
                  {u'cdesc': u'Finance / Accounts / Tax'},
                  {u'cdesc': u'Investment Banking / M&A'}],
       u'pdesc': u'Finance / Accounts / Investment Banking',
       u'pid': 10007}]
Run Code Online (Sandbox Code Playgroud)

我想将它转换为这样的东西:

FA = {u'Audit':2,
     u'Equity Research':2,
     u'Finance / Accounts / Tax':2,
     u'Investment Banking / M&A':2,
     u'Finance / Accounts / Investment Banking':2}
Run Code Online (Sandbox Code Playgroud)

我可以使用嵌套循环轻松完成此操作,其代码如下所示.有没有办法使用词典理解来做到这一点?

a = dict()
for fa in FA:
    a.update({slugify(fa['pdesc']):2})


    for c in fa['child']: 
        a.update({slugify(c['cdesc']):2})
Run Code Online (Sandbox Code Playgroud)

python dictionary dictionary-comprehension

2
推荐指数
1
解决办法
1048
查看次数