私は現在、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 が正しく計算され、費用が減り、払い戻しが追加されます。
それとも、別のルーツに従う方が賢明でしょうか?
このコードは、これまで見た中で最も Pythonic ではないかもしれませんが、この 1 年間はうまく機能しています。