我从信用卡对账单中提取了文本,只对整个月内的交易进行了切片,并将其保存在一个列表中。该列表有404个字符串,该列表的摘录如下所示:
['Apr',
'27',
'UBER',
'TECHNOLOGIES',
'INC866-576-1039CA',
'$10.93',
'Apr',
'27',
'UBER',
'TECHNOLOGIES',
'INC866-576-1039CA',
'$11.38',
'Apr',
'28',
'COSTCO',
'WHSE',
'#1018HOUSTONTX',
'$105.02']
正如您所看到的,该列表遵循标准格式,其中一个事务由3部分组成:日期(2个单独的字符串)、描述(2-5个字符串)和金额(1个字符串)。
我的目标是基于这些信息创建一个Pandas Dataframe,但是我很难找到一种方法来操作字符串来正确地分割每个类别(日期、描述、数量)。我认为我需要使用正则表达式和循环的某种组合来完成此任务。
根据评论,从信用卡对账单(PDF)中提取的原始数据也如下所示:
" \nApr 27\nUBER TECHNOLOGIES\nINC866-576-1039CA\n$10.93\nApr 27\nUBER TECHNOLOGIES\nINC866-576-1039CA\n$11.38\nApr 28\nCOSTCO WHSE #1018HOUSTONTX\n$105.02\n"
发布于 2018-06-02 08:59:40
您只需使用原始文本即可,根据您的评论,原始文本如下:
Apr 27
UBER TECHNOLOGIES
INC866-576-1039CA
$10.93
Apr 27
UBER TECHNOLOGIES
INC866-576-1039CA
$11.38
Apr 28
COSTCO WHSE #1018HOUSTONTX
$105.02
格式看起来是:
DATE
VENDOR
[EXTRA INFO, OPTIONAL]
$AMOUNT
您可以读取循环中的代码行,如下所示:
txs = []
for line in file:
date = pd.to_datetime(line)
vendor = next(file)
amount = next(file) # might not be amount yet
while not amount.startswith('$'):
vendor += amount
amount = next(file)
txs.append((date, vendor, amount))
# now create DataFrame
pd.DataFrame(txs)
这里的想法是以块为单位读取文件,每个事务使用一次循环迭代。
https://stackoverflow.com/questions/50652473
复制相似问题