我从信用卡对帐单中提取了文本,仅对整个月内的交易进行了切片,并将其保存在列表中。该列表长度为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个部分组成:Date(2个单独的字符串),Description(2-5个字符串)和Amount(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"
您应该只使用原始原始文本,根据您的评论:
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)
这里的想法是以块的形式读取文件,每次事务循环一次迭代。