我目前正在使用一个脚本,该脚本通过 PyPDF2 将 PDF 拉到一个字符串中,然后使用正则表达式在该 PDF 中搜索括号中的费用金额。然后在 pd.DataFrame 中汇总和处理这些费用,并将结果输出到 CSV 文件。
一切都很好,直到发出退款。基本上所有费用都包含在括号内,我会使用 re 来搜索 x 费用,例如。
adminFee = re.findall('Administration Fees\s*\((.*?)\)', data)
然后将其添加到 totalFees 列表中
totalFees = adminFee + govFee + commFee....ect.
然后将该列表转换为 DataFrame 以进行操作。
最近,PDF 的格式更改为包含更多费用字符串。这有时也可能构成退款。我用 re 搜索的字符串看起来像这样
""Excess Expenses (Refund from client) (150.00)""
或者
""Excess Expenses (Refund from client) 200.00""
我的第一个问题是括号,我尝试了以下无济于事
excessExpenses = re.findall('Excess expenses \(Refund From client\)\s*(\d*\,*\d*\.+\d+\))',data)
但它返回一个空列表[]
?我已经尝试了几个re,但似乎都没有工作。
我的下一个问题是,以前这些都是所有费用(负金额),但现在包括正值和退款。这与 DataFrame 计算相混淆。我应该如何最好地解决这个问题。我可以回到括号内的先前费用,并通过以下方式将它们设为负数:
adminFee = re.findall('Administration Fees\s*(\(?.*?\)?)',data)
adminFee = ''.join(adminFee)
adminFee = adminFee.replace(',','') #for float manipulation in dataframe
adminFee = adminFee.replace('(','-') # replace ( to make -
adminFee = adminFee.replace(')','') #remove last braket
adminFee = [adminFee] #make list again
然后提取正数,这将允许正确计算 DataFrame,减少费用并增加退款。
或者跟随另一个根会更可取吗?
我知道这段代码可能是你见过的最少的 Python 代码,但它在过去一年中运行良好。