python-3.x - 如何传递多个 kwargs
问题描述
我是 python(scrapy 框架)的新手,并试图实现以下要求:
scrapy crawl ispider01 -a "urls=http://www.example1.com, http://www.example2.com" -a "keywords = email, contactus"
对于“urls”部分,我可以通过以下方式实现:
def __init__(self, *args, **kwargs):
urls = kwargs.pop('urls', [])
if urls:
self.start_urls = urls.split(',')
#self.logger.info(self.start_urls)
super(QuotesSpider, self).__init__(*args, **kwargs)
但是为了实现关键字,我该怎么办?
我在函数调用中阅读了多个 kwargs?我们可以在一个函数中传递多个 **kwargs。但是当我运行蜘蛛时,它给我添加第二个 **kwargs01 的语法错误。
感谢帮助!
解决方案
kwargs 只是一个字典,可能看起来像这样:
kwargs = {
"urls": "http://www.example1.com, http://www.example2.com",
"keywords": "email, contactus"
}
def __init__(self, *args, **kwargs):
urls = kwargs.pop('urls', [])
if urls:
self.start_urls = urls.split(',')
#self.logger.info(self.start_urls)
keywords = kwargs.pop('keywords', [])
if keywords:
self.start_keywords = keywords.split(',')
#self.logger.info(self.start_keywords)
super(QuotesSpider, self).__init__(*args, **kwargs)
如果你想将两个字典传递**kwargs
给一个方法,你需要先合并它们:
kwargs = { **dict1, **dict2 }
推荐阅读
- linq - LINQ 恢复顺序后并行处理
- javascript - Python Selenium:单击单选按钮
- php - 难以在 Facebook-PHP-SDK 中授权应用程序
- json - 在序列化/反序列化 Avro Record 后,在 Scala 中将 java.util.HashMap 转换为 JSON
- python - 如何在数组维度不同时评估表达式
- node.js - 为什么不能在反应前端工作 nodejs 脚本?
- prometheus - Prometheus 错误 - 摄取样本时出错
- google-maps - 按新鲜度排序?
- salesforce - 没有从 Salesforce Streaming API 推送主题频道收到消息
- python - 替代使用所有 26 个字母的 hexdigest?