如何在auto lisp中实现嵌套函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在auto lisp中实现嵌套函数相关的知识,希望对你有一定的参考价值。

参考技术A 自定义函数,直接(满足条件的时候)引用就可以实现跳转。本回答被提问者采纳 参考技术B defun 函数 (参数) ;;;---不加C:
先定义一个函数,然后就可以直接调用了参数要对应上

如何在scrapy中实现嵌套项?

【中文标题】如何在scrapy中实现嵌套项?【英文标题】:how to implement nested item in scrapy? 【发布时间】:2012-06-26 10:14:09 【问题描述】:

我正在抓取一些具有复杂分层信息的数据,需要将结果导出到 json。

我将项目定义为

class FamilyItem():
    name = Field()
    sons = Field()

class SonsItem():
    name = Field()
    grandsons = Field()

class GrandsonsItem():
    name = Field()
    age = Field()
    weight = Field()
    sex = Field()

当蜘蛛运行完成时,我会得到一个打印的项目输出,如

'name': 'Jenny',
   'sons': [
            'name': u'S1',
             'grandsons': [
                   'name': u'GS1',
                    'age': 18,
                    'weight': 50
                   ,
                   
                    'name':u'GS2',
                    'age': 19,
                    'weight':51]
                   ]

但是当我运行scrapy crawl myscaper -o a.json 时,它总是说结果“不是 JSON 可序列化的”。然后我将项目输出复制并粘贴到 ipython 控制台并使用 json.dumps(),它工作正常。那么问题出在哪里?这让我发疯了......

【问题讨论】:

【参考方案1】:

保存嵌套项时,请确保将它们包装在对 dict() 的调用中,例如:

gs1 = GrandsonsItem()
gs1['name'] = 'GS1'
gs1['age'] = 18
gs1['weight'] = 50

gs2 = GrandsonsItem()
gs2['name'] = 'GS2'
gs2['age'] = 19
gs2['weight'] = 51

s1 = SonsItem()
s1['name'] = 'S1'
s1['grandsons'] = [dict(gs1), dict(gs2)]

jenny = FamilyItem()
jenny['name'] = 'Jenny'
jenny['sons'] = [dict(s1)]

【讨论】:

先生,您应该得到一块饼干! ?【参考方案2】:

不确定是否有办法使用类在scrapy 中执行嵌套项,但数组可以正常工作。你可以这样做:

grandson = Grandson(name = 'Grandson', age = 2)

son = Son(name = 'Son', grandsons = [grandson])

item = Item(name = 'Name', son = [son])

【讨论】:

以上是关于如何在auto lisp中实现嵌套函数的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中模拟嵌套函数

C和C++是不是都可以函数嵌套调用,但是不能函数嵌套定义?

如何在scrapy中实现嵌套项?

如何在 cuda 推力中实现嵌套循环

如何在`JSS`中实现`CSS`嵌套规则?

如何在 Postgresql 中实现对复杂嵌套 JSONB 的全文搜索