-1
我想要搜索文本中提取一些数据,我需要的时候我觉得没有什么需要处理的话:处理异常,同时遍历一本字典
items = {'item_1':['----']*len(some_text),
'item_2':['----']*len(some_text),
'item_3':['----']*len(some_text)]
for i, data in enumerate(some_text):
try:
items['item_1'][i] = re.findall('regex_1',data)[0]
except (IndexError):
pass
try:
items['item_2'][i] = re.findall('regex_2',data)[0]
except (IndexError):
pass
try:
items['item_3'][i] = re.findall('regex_2',data)[0]
except (IndexError):
pass
我做它的方式,而不是这个:
for i, data in enumerate(some_text):
try:
items['item_1'][i] = re.findall('regex_1',data)[0]
items['item_2'][i] = re.findall('regex_2',data)[0]
items['item_3'][i] = re.findall('regex_2',data)[0]
except (IndexError):
pass
因为在最后一种情况下,如果只有一个搜索失败,我将丢失所有数据,但是我重复了很多代码。
编辑。
我的预期结果是与大多数项目有一个冠军。
例如,如果:
ITEM_1是一个地址
ITEM_2是出了名
ITEM_3是calification
如果和发生异常而搜索地址,我仍然希望能够得到名字和冥想。我也不想处理这个异常,所以我可以在需要时输入“未找到”的消息
为什么没有'regex_3'? –
如果任何搜索失败,您不希望它失败吗?或者您是否有理由仍然捕获您可以捕获的任何数据? – Trey50Daniel
那么你的问题首先是什么?如果任何一个搜索失败,可能你应该解释一下预期的结果应该是什么样子,因为在任何一个版本的代码中,相应的列表不会被追加到下一个迭代中,并且会产生一个“IndexError”。 –