我有一个python字典,我最终想把它插入mysql数据库。我在分析来自“条目”的数据,它的意思是(符号是数字):
entries = [ "['data'] runtime: ###, scan: ###",
"['data'] ctime: ###, scan: ###",
"['data'] runtime: ###", ... ]
“”中的每一项都是一个单独的条目。现在我使用regex提取与每个条目相关的运行时、ctime和扫描,如下所示:
import re
terms = (["runtime", "runtime\s?:\s?(\d+)"],
["ctime", "ctime\s?:\s?(\d+)"],
["scan", "scan\s?:\s?(\d+)"])
d = {}
for i in range(len(terms)):
def getTerm(term, entries):
pattern = re.compile(term)
output = pattern.findall(str(entries))
return output
d[terms[i][0]] = getTerm(terms[i][1], entries)
但是,正如您所看到的,并不是所有条目都有运行时、ctime和scan。如果某个值没有出现在条目中,我希望它以[]或NULL(或None)的形式输入到字典中,因为将来如果我查看字典中每个键的特定#元素,我希望所有数据都与一个特定条目相关联。我想让我的字典看起来像这样:
d = {'ctime': [None, '###', None], 'runtime': ['###', None, '###'], 'scan': ['###', '###', None]}
我该怎么做?你知道吗
re.findall()
在找不到匹配项时返回一个空列表([]
),因此不需要空回退。如果您想在找不到术语时使用None
,如Brennan所说,则使用findall(string) or None
。你知道吗考虑使用列表理解来循环所有条目,而dict理解则将regex模式应用于同一条目并将结果保存在dict中
现在你有了这样的东西:
上述代码相当于(但性能更高):
如果
entries
是一个字符串列表,其中可能包含关键字,也可能不包含关键字,并且顺序很重要,那么我们需要对这些条目进行迭代:第一种选择:
第二个异步选项:
编辑:与@Wynne:合作开发的聊天解决方案)
相关问题 更多 >
编程相关推荐