好友
阅读权限10
听众
最后登录1970-1-1
|
from openpyxl import load_workbook
def 数据清洗(text):
# 数据清洗
text = text.replace(":", ":")
text = text.replace(",", ",")
text = text.replace(" ", "")
# 数据提取
parts = text.split(",") # 首先根据逗号分割
parts = [part.split(":") for part in parts] # 然后对每个部分根据冒号进行分割
# 输出数据
客户名称 = parts[0][1]
客户账号 = parts[2][1]
卡号 = parts[3][1]
out_text = []
out_text.append(客户名称)
out_text.append(客户账号)
out_text.append(卡号)
return out_text
# 加载工作簿
wb = load_workbook('原始工作簿.xlsx')
# 选择要操作的工作表
sheet = wb['Sheet1'] # 假设要操作名为"Sheet1"的工作表
new_sheet = wb.create_sheet('Sheet2') # 输出工作表
# 遍历第1列的所有单元格,写入数据
for row in sheet.iter_rows():
cell = row[0]
if '客户名称' in cell.value:
text = 数据清洗(cell.value)
sheet.cell(row=cell.row + 2, column=19).value = text[0]
sheet.cell(row=cell.row + 2, column=20).value = text[1]
sheet.cell(row=cell.row + 2, column=21).value = text[2]
# 如果单元格是日期,并且后面新建的单元格为空,则将其值设置为上方单元格的值
if ('-' in cell.value) and sheet.cell(row=cell.row, column=19).value is None:
sheet.cell(row=cell.row, column=19).value = sheet.cell(row=cell.row-1, column=19).value
sheet.cell(row=cell.row, column=20).value = sheet.cell(row=cell.row-1, column=20).value
sheet.cell(row=cell.row, column=21).value = sheet.cell(row=cell.row-1, column=21).value
# 如果单元格是交易日期
if '交易日期' in cell.value:
sheet.cell(row=cell.row, column=19).value = '客户名称'
sheet.cell(row=cell.row, column=20).value = '客户账号'
sheet.cell(row=cell.row, column=21).value = '卡号'
# 把第二行的表头加上
for row in sheet.iter_rows(min_row=2, max_row=2,min_col=1, max_col=21, values_only=True):
new_sheet.append(row)
# 假设你的数据从第1行开始,筛选出A列中不含"客户名称"和"交易日期"的所有行
for row in sheet.iter_rows(min_row=1, max_row=sheet.max_row, min_col=1, max_col=21, values_only=True):
if ("客户名称" not in row[0]) and("交易日期" not in row[0]):
# 将筛选出的行添加到新的工作表中
new_sheet.append(row)
# 保存修改后的工作簿
wb.save('原始工作簿.xlsx')
|
|