正则表达式,用于查找将单词分成多个部分并与数字混合的单词



我写了python代码来从pdf中抓取表格。当表有整行的缺失值时,它会显示图例"数据不足"。在检测到表格并拆分为列后,此图例被剪切(在不同行/表的不同点(并在中间出现奇怪的字符(大多数时候是数字(。

如何编写正则表达式来检测所有这些?示例:
--------------------------------------------------
| column_1 - | column_2 |

--------------------------------- |Insu1ff0icien |t 数据60 |
---------------------------------
|不足0效率 |数据60 |

---------------------------------

我尝试的代码是这个,但后来我检测到我没有捕获所有情况:

for index, row in df.iterrows():
if row.str.contains('Insuf', regex=False).any():
df.iloc[index,:] = [np.nan] * len(row)

我认为您将不得不更多地考虑手头的问题,如果您可以更新您的问题,那就太好了,但我认为这是一个有趣的问题。显然,可以使用一些正则表达式,但我认为更灵活的方法是创建一个潜在唯一字母模式的列表,然后使用np.where()与列表推导式一起根据要查找的字母模式列表更改数据,您可以在手动检查数据时识别这些模式。

import pandas as pd, numpy as np
df = pd.DataFrame({'column_1' : ['Insu1ff0icien', 'Insuff0icient'],
'column_2' : ['t data60', 'data60']})
insufficient_list = ['ins', 'Ins', 'nsu', 'suf']
df['column_1'] = np.where((df['column_1'].apply(lambda x: [i for i in insufficient_list if i in x])),
'Insufficient data',
df['column_1'])
df

输出:

column_1            column_2
0   Insufficient data   t data60
1   Insufficient data   data60