当它找不到任何东西时如何处理正则表达式(Python)



我正在几个文档中搜索值,为每个参数创建不同的数据库。"组["金砖"];包含文本格式的所有文档。

a_dict = ['RHO','CE','LAMBDA','THETA_POR','THETA_EFF','THETA_CAP','THETA_80','AW','MEW','KLEFF']
Brick_par = []
for bricks in groups["BRICK"]:
for par in a_dict:
file = open(bricks, 'r', encoding='latin-1')
file_txt = file.read() #leggo il file
regex = '(('+(par)+')+)s+=s+([0-9]+.?[0-9]+)'
searched = re.search(regex, file_txt) #cerco la riga da modificare
Brick_par.append(searched[3])
Brick_par = pd.DataFrame({str(par):Brick_par})

如果我不使用循环,而是单独使用几个参数(例如CE(,那么脚本就可以工作了。这是因为有些文档不包含某些参数。

我想知道是否有办法";忽略";regex在文档中找不到的所有值。这样我可能就能解决问题。

此外,我的目标是创建一个包含所有参数的数据帧。但这是后一步。

我得到的错误是:

TypeError:"NoneType"对象不是可下标的

diggusbickus所建议:

a_dict = ['RHO','CE','LAMBDA','THETA_POR','THETA_EFF','THETA_CAP','THETA_80','AW','MEW','KLEFF']
Brick_par = []
for bricks in groups["BRICK"]:
for par in a_dict:
file = open(bricks, 'r', encoding='latin-1')
file_txt = file.read() #leggo il file
regex = '(('+(par)+')+)s+=s+([0-9]+.?[0-9]+)'
searched = re.search(regex, file_txt)
if not searched: continue
Brick_par.append(searched[3])
file.close()
Brick_par = pd.DataFrame({str(par):Brick_par})

我的目标是创建一个数据帧,其中包含每个参数的所有结果。感谢您的光临。

您应该首先将brick_par作为dict,因为这正是您想要提供给pandas 的内容

import pandas as pd
import re
a_dict = ['RHO','CE','LAMBDA','THETA_POR','THETA_EFF','THETA_CAP',
'THETA_80','AW','MEW','KLEFF']
brick_par = {k: [] for k in a_dict}
for bricks in groups["BRICK"]:
for par in a_dict:
with open(bricks, 'r', encoding='latin-1') as f:
file_txt = f.read() #leggo il file
regex = '(('+(par)+')+)s+=s+([0-9]+.?[0-9]+)'
searched = re.search(regex, file_txt)
if not searched: 
brick_par[par].append(None)
else:
brick_par[par].append(searched[3])
brick_par = pd.DataFrame(brick_par)

相关内容

  • 没有找到相关文章

最新更新