如何在字典中添加词典(how can I add dictionaries in dictionary)
我有4件物品。
item['bigCtgr'] = 'item' item['smaCtgr'] = 'food' item['ssCtgr'] = 'apple' item['sCtgr'] = 'red'
我会多次添加到process_item。 所以我想制作这样的结构。 像类别的东西
{"item" : {"food": {"apple": {"green":NULL}, {"red":NULL}}, {"banana": {"yellow":NULL}, {"green":NULL}}, } {"sweet": {"candy": {"yellow":NULL}} } }
但我的代码不起作用,我不知道为什么。
class CategoryPipeline(object): global ctgr ctgr = {} def __init__(self): global file file = open("test.json","w") def process_item(self, item, spider): if item['bigCtgr'] not in ctgr.keys(): ctgr[item['bigCtgr']] = {item['smaCtgr']: {item['ssCtgr'] : {item['sCtgr'] : 'NULL'}}} if item['smaCtgr'] not in ctgr[item['bigCtgr']].keys(): ctgr[item['bigCtgr']][item['smaCtgr']] = {item['ssCtgr']: {item['sCtgr'] : 'NULL'}} elif item['ssCtgr'] not in ctgr[item['bigCtgr']][item['smaCtgr']].keys(): ctgr[item['bigCtgr']][item['smaCtgr']][item['ssCtgr']] = {item['sCtgr'] : 'NULL'} else: ctgr[item['bigCtgr']][item['smaCtgr']][item['ssCtgr']][item['sCtgr']] = 'NULL' def __del__(self): b = json.dumps(ctgr, ensure_ascii=False).encode('utf-8') file.write(b) file.write('\n') file.close()
我该如何制作代码?
I have 4 items.
item['bigCtgr'] = 'item' item['smaCtgr'] = 'food' item['ssCtgr'] = 'apple' item['sCtgr'] = 'red'
and i will add to process_item many times. so i want to make structure like this. Something like category
{"item" : {"food": {"apple": {"green":NULL}, {"red":NULL}}, {"banana": {"yellow":NULL}, {"green":NULL}}, } {"sweet": {"candy": {"yellow":NULL}} } }
but my code is not working and I don't know why.
class CategoryPipeline(object): global ctgr ctgr = {} def __init__(self): global file file = open("test.json","w") def process_item(self, item, spider): if item['bigCtgr'] not in ctgr.keys(): ctgr[item['bigCtgr']] = {item['smaCtgr']: {item['ssCtgr'] : {item['sCtgr'] : 'NULL'}}} if item['smaCtgr'] not in ctgr[item['bigCtgr']].keys(): ctgr[item['bigCtgr']][item['smaCtgr']] = {item['ssCtgr']: {item['sCtgr'] : 'NULL'}} elif item['ssCtgr'] not in ctgr[item['bigCtgr']][item['smaCtgr']].keys(): ctgr[item['bigCtgr']][item['smaCtgr']][item['ssCtgr']] = {item['sCtgr'] : 'NULL'} else: ctgr[item['bigCtgr']][item['smaCtgr']][item['ssCtgr']][item['sCtgr']] = 'NULL' def __del__(self): b = json.dumps(ctgr, ensure_ascii=False).encode('utf-8') file.write(b) file.write('\n') file.close()
How can i make the code?
原文:
更新时间:2021-09-29 17:09
最满意答案
检查names.ToString()返回的内容,不应该对它运行正则表达式。
要获取与您的模式匹配的DefinedNames的数量,您可以使用:
names.Count(n => Regex.IsMatch(n.InnerText, @"(?<!\w)#\w+"));
Check what is returned by names.ToString(), you shouldn't run regex on it.
To get the number of DefinedNames matching your pattern, you can use:
names.Count(n => Regex.IsMatch(n.InnerText, @"(?<!\w)#\w+"));
相关问答
更多-
TCP/IP模型是一个________。[2023-10-02]
a -
首先,您可以使用RegexOptions.Compiled来指示正则表达式引擎使用轻量级代码生成将正则表达式表达式编译为IL。 程序将开始变慢,但使用正则表达式的匹配更快。 下一步将是消费者生产者设计模式的一些很好的实现。 可悲的是,我不知道你的操作中最慢的是什么但如果你尝试实现这种模式它应该更快(下面的一些伪代码) BlockingCollection
collection = new BlockingCollection (); Action ... -
下列中不属于面向对象的编程语言的是?[2022-05-30]
a -
问题的解决方案是我需要添加一个ToList到我的名字变量。 foreach (var name in names.ToList()) { if (regex.IsMatch(name.InnerText)) { name.Remove(); work.Save(); } } The ...
-
由于这是Groovy,您可以将所有代码更改为: String stream = str.findAll( /\b[A-F0-9]{2}\b/ ).join() As this is Groovy, you can change all of your code to: String stream = str.findAll( /\b[A-F0-9]{2}\b/ ).join()
-
正则表达式寻找特殊模式(Regex to find special pattern)[2022-01-27]
您当前的正则表达式与$() 不匹配,因为[^$]至少匹配1个字符。 唯一的办法就是当你有一个包含多个parens的输入时,我会想到你会进行这场比赛的地方,比如: $()(something) 在这些情况下,您还需要至少排除结束语: string pattern = @"\$\(([^$\s)]+)\)"; 以上匹配例如: abc in $(abc)和 abc和def在$(def)$()$(abc)(something) 。 Your current regex does not match $() be ... -
放弃 对于仇恨者来说,这不一定是带有正则表达式问题的解析HTML。 他的问题的根源是他正在寻找正则表达式中的Disjunction功能。 解 虽然@dtb对于带有html的正则表达式可能是正确的,但对于简单的情况(小输入和简单模式),如果你知道何时使用它并不是一个坏主意。 这是正则表达式中的一个简单解决方案。 string pattern = @"
- [\s\n\t.]+" +
@"(?:
这是一个通用的方法, 你可以在这里找到 。 注意你的正则表达式的改变。 它使用\. 而不是. 在文字@ string中; 这将匹配一段时间而不是通配符类 。 using System; using System.Collections.Generic; using System.Text.RegularExpressions; public class Program { public static void Main() { Listfiles = ne ... 你可以使用负前瞻断言 : "test2=(?!1\\b)([^,]*)" 上面的模式匹配test2只有在没有后跟1才会匹配(字边界\b用来匹配像17这样的数字,但只匹配1 ) You can use negative lookahead assertion: "test2=(?!1\\b)([^,]*)" Above pattern will matchtest2 will match only if it is not followed by 1 (word boundary \b is used t ...检查names.ToString()返回的内容,不应该对它运行正则表达式。 要获取与您的模式匹配的DefinedNames的数量,您可以使用: names.Count(n => Regex.IsMatch(n.InnerText, @"(?相关文章
更多- 如何 通过TabPanel的add方法,调用已经存在的panel?
- Memcached add 添加key-value命令(存在不会更新)
- IK如何添加分词到主词典?
- Hadoop的I/O
- Hadoop I/O系统介绍
- Lua 文件 I/O 操作
- Groovy 文件I/O 操作详解
- I18N 国际化 简介
- Hadoop1.0.4 HDFS I/O性能测试
- [转]Top 20 Programming Lessons I've Learned in 20 Years
最新问答
更多- 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
- 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
- OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
- 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
- codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
- 在计算机拍照在哪里进入
- 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
- No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
- 单页应用程序:页面重新加载(Single Page Application: page reload)
- 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
- System.StackOverflow错误(System.StackOverflow error)
- KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
- 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
- android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
- TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
- 企业安全培训的各项内容
- 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
- C#类名中允许哪些字符?(What characters are allowed in C# class name?)
- NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
- 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
- 将多个行和可变行移动到列(moving multiple and variable rows to columns)
- 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
- 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
- Angular $资源不会改变方法(Angular $resource doesn't change method)
- 在Angular 5中不是一个函数(is not a function in Angular 5)
- 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
- 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
- 常见的python rpc和cli接口(Common python rpc and cli interface)
- Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
- 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)