首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

应用技巧:微信接龙文本转表格工具

在日常生活中,经常会碰到需要统计QQ或微信群接龙数据的情况,这就需要把接龙的消息文本转换成一个Excel表格。然而,将每个人的接龙信息逐个复制到表格中的操作非常繁琐。并且发起人无法保证每个接龙人都严格按信息格式回复,面对五花八门的接龙文本,处理起来非常麻烦。所以我想要写一个将文本转换成Excel表格文件的工具(图1)。

01

操作思路

首先,用户输入文字形式的表格,用分隔符分隔每一列的内容。接着,程序会遍历每行内容并按照用户输入的分隔符将每一行分隔成若干列,然后通过openpyxl库将其写入到Excel表格中。

由于文字表格中每行末都有回车(或换行),所以用控制台输入数据就显得不那么简便了。因此,这个转换工具需要GUI界面。 

界面设计

在GUI界面中,我们通过输入框(Entry)和文本框(Text)两个控件来获取数据。在微信接龙的场景中,一个大群可能有上百人,那么接龙数据就有近百行。此时,必然需要滚动条(Scrollbar)控件,方便浏览和编辑多行的文字表格(图2)。

这里使用的是简洁易用的tkinter库进行GUI编程,并使用网格布局模式(grid)对窗体中的控件进行布局。以下是grid布局中的一些常用属性(表1):

在grid布局中,padx属性接受两种类型的参数。此处可以传入一个整数a作为参数,表示组件左侧与右侧与相邻的表格线都相距a个单位;也可以传入一个元组(a,b)作为参数,表示组件与左侧表格线相距a个单位,与右侧表格线相距b个单位。若以元组(a,b)作为pady属性的参数,则表示组件与上部的表格线相距a个单位,与下部的表格线相距b个单位。ipadx和ipady属性也有同样的规则。另外,在sticky属性中,四种对齐方式可以组合使用(使用加号连接),如N+S代表组件上下填充到表格框的顶端和底端,N+S+W则表示将组件竖直方向上从底部填充到顶部并左对齐。

文字到表格的转换

在“转换”按钮的事件响应函数convert中,用get方法对输入框和文本框中的内容进行了取值,并将其传入process函数进行处理。而process函数的工作就是利用传入的两个字符串(分别表示文字表格和分隔符)获取每个单元格的内容并输出到文件中(图3)。 

因为get方法在获取文本框控件的内容时,末尾可能会多一个换行符,所以需要用到strip方法去除文本末尾多余的换行符。然后对处理完的字符串再使用split方法,它可以按照指定的分隔符将一个字符串分割成若干部分并返回一个列表。这里以\n(换行符)为分隔符,就是将每行的内容分割成一个元素。

值得注意的是,openpyxl创建的Excel表格的行数是从1(而不是0)开始的,因此在使用cell方法时,需要注意内循环和外循环中计数变量的值与行数的对应关系。 

02

实用改进

在接龙时遇到不符合预设格式的消息,该如何处理呢?(图4)

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OtZ8pLcMygFY7q2FuLCZqqGg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券