我有两种输出
a)
{'projections': {}, 'band_index': [], 'energy': None, 'kpoint_index': [], 'kpoint': []}
b)
{'band_index': defaultdict(<class 'list'>, {<Spin.up: 1>: [9]}), 'kpoint': <pymatgen.electronic_structure.bandstructure.Kpoint object at 0x7f65f2784550>, 'kpoint_index': [28, 29, 188], 'projections': {}, 'energy': 6.5496}
我想用
import re
cbm=bs.get_cbm()
searchObj=re.search(r '\' +str(energy)+ \' : (.*?) (.*)', cbm, re.M|re.I)
print(searchObj.group(1))
如果cbm只返回a)或b)
我现在得到了错误
searchObj=re.search(r '\' +str(energy)+ \' : (.*?) (.*)', cbm, re.M|re.I)
^
语法错误:无效语法
我在正则表达式方面没有什么背景,所以我很感激任何帮助。谢谢
谢谢你的回复让·弗朗索瓦
我已经成功地创建了这个regex,它可以很好地满足我的需求
cbm=bs.get_cbm()
返回dict
(在这两种情况下),而不是str
你不能(也不必)用正则表达式解析那些
案例a:它返回一个包含
"energy"
键的字典所以要知道你是否在案例a中,就这么做吧
另一种方法是使用
'band_index'
返回的不同值类型:相关问题 更多 >
编程相关推荐