清理 Python 中的.csv文本数据



我最近创建了一个python程序,可以从.csv文件中导入我的财务状况并将其传输到Google表格中。但是,我正在努力弄清楚如何修复我的银行给我的名字。

例:ME DC SI XXXXXXXXXXXXXXXX NETFLIX应该只是NETFLIXPOS XXXXXXXXXXXXXXXX STEAM PURCHASE应该只是STEAM等等

如果这是一个愚蠢的问题,请原谅我,因为我在编码方面是一个新手,我只是想用它来自动化我生活中的某些情况。

import csv
from unicodedata import category
import gspread
import time
MONTH = 'June'
# Set month name
file = f'HDFC_{MONTH}_2022.csv'
#the file we need to extract data from
transactions = []
# Create empty list to add data to
def hdfcFin(file):
'''Create a function that allows us to export data to google sheets'''
with open(file, mode = 'r') as csv_file:
csv_reader = csv.reader(csv_file)
for row in csv_reader:
date = row[0]
name = row[1]
expense = float(row[2])
income = float(row[3])
category = 'other'
transaction = ((date, name, expense, income, category))
transactions.append(transaction)
return transactions

sa = gspread.service_account()
# connect json to api
sh = sa.open('Personal Finances')
wks = sh.worksheet(f'{MONTH}')
rows = hdfcFin(file)
for row in rows:
wks.insert_row([row[0], row[1], row[4], row[2], row[3]], 8)
time.sleep(2)
# time delay because of api restrictions

如果您没有特定的格式来标识名称,则可以使用以下逻辑。哪个将有键值对。如果键出现在名称中,则可以将其替换为值。

d={'ME DC SI XXXXXXXXXXXXXXXX NETFLIX':'NETFLIX','POS XXXXXXXXXXXXXXXX STEAM PURCHASE':'STEAM'}
test='POS XXXXXXXXXXXXXXXX STEAM PURCHASE'
if test in d.keys():
test=d[test]
print(test)

输出:

STEAM

如果要求是只从你的名字中获取最后一个单词,那么你可以使用下面的逻辑。

test='ME DC SI XXXXXXXXXXXXXXXX NETFLIX'
test=test.split(" ")[-1]
print(test)

输出:

NETFLIX

最新更新