使用python3.9,利用字典的方法,将excel表格中的某一列文本用8位二进制来表示,规则如下:文本中出现“学习、查资料”则二进制数第一位加1,出现“浏览新闻”二进制数第二位加1,出现“收发邮件”二进制数第三位加1,出现“娱乐游戏”二进制数第四位加1,出现“聊天交友”二进制数第五位加1,出现“资源下载”二进制数第六位加1,出现“上网购物”二进制数第七位加1,出现“其他”二进制数第八位加1,将该列的每个字符串都进行匹配,最后该列8位二进制数拆开成8个数字保存至另一个文档
时间: 2023-12-01 09:02:27 浏览: 41
可以使用openpyxl库来读取和写入Excel表格,具体实现如下:
```python
import openpyxl
# 打开Excel文件
wb = openpyxl.load_workbook('test.xlsx')
# 选择表格
ws = wb.active
# 定义用于统计各项出现次数的字典
count_dict = {'学习': 0, '查资料': 0, '浏览新闻': 0, '收发邮件': 0, '娱乐游戏': 0, '聊天交友': 0, '资源下载': 0, '上网购物': 0, '其他': 0}
# 遍历文本列,统计各项出现次数
for cell in ws['A']:
text = cell.value
if '学习' in text:
count_dict['学习'] += 1
if '查资料' in text:
count_dict['查资料'] += 1
if '浏览新闻' in text:
count_dict['浏览新闻'] += 1
if '收发邮件' in text:
count_dict['收发邮件'] += 1
if '娱乐游戏' in text:
count_dict['娱乐游戏'] += 1
if '聊天交友' in text:
count_dict['聊天交友'] += 1
if '资源下载' in text:
count_dict['资源下载'] += 1
if '上网购物' in text:
count_dict['上网购物'] += 1
if not any(x in text for x in ['学习', '查资料', '浏览新闻', '收发邮件', '娱乐游戏', '聊天交友', '资源下载', '上网购物']):
count_dict['其他'] += 1
# 将各项出现次数转换为二进制数的相应位上的数字
binary_list = []
for key in count_dict:
if key == '其他':
binary_list.append(0)
else:
binary_list.append(int(bool(count_dict[key])))
# 将二进制数拆开成8个数字
number_list = [int(''.join(map(str, binary_list[i:i+8])), 2) for i in range(0, len(binary_list), 8)]
# 将结果写入另一个Excel表格
wb_new = openpyxl.Workbook()
ws_new = wb_new.active
for i in range(len(number_list)):
ws_new.cell(row=1, column=i+1, value=number_list[i])
wb_new.save('result.xlsx')
```
其中,`test.xlsx`为原始Excel表格文件名,该文件中第一列为需要处理的文本列;`result.xlsx`为保存结果的Excel表格文件名,该文件中第一行为拆开后的8个数字。
请注意,该程序仅处理第一列中的文本,如果需要处理其他列,需要将程序中的`ws['A']`改为相应的列,如`ws['B']`。另外,该程序处理的文本为大小写敏感,如果需要忽略大小写,可以将`text`变量和字符串常量都转换为小写后进行匹配。