如何使用Python实现恢复被拆分的名字?

202 阅读2分钟

我正在参加「掘金·启航计划」

如何使用Python实现恢复被拆分的名字?

朋友在将文本文件中的姓名显示在公告栏时发现姓名被拆分的”七零八落”。读取的姓名列表如下:

['刘玄德、司马懿、诸葛亮\n', '、张飞、刘表、鲁肃、马\n', '谡、袁绍、吕阿蒙、公孙\n','瓒\n'] (图3)

存在如下问题

  • 问题一:列表中共有4个元素,每个元素后面都存在换行符’\n’;

  • 问题二:“诸葛亮”后面的顿号被读取到后一个元素中;

  • 问题三:“马谡”被拆分到两个元素;

  • 问题四:“公孙瓒”被拆分到两个元素。

产生问题的原因主要是,默认状态下,数据信息以不分行的形式保存到文本文件中(图1)。

为方便查看,在保存文件时我们经常设置为分行保存(图2)。

readlines命令读取文本文件时,文件会被输出为以换行符为分割点的多元素列表(图3)。

image-20221021214740457

(图1)

image-20221021214748300

(图2)

img

(图3)

解决这类问题的核心是将读取的列表转变为字符串,然后去除字符串中的换行符即可。步骤如下:

第一步: 将列表元素输出为字符串。

lst_s = ['刘玄德、司马懿、诸葛亮\n', '、张飞、刘表、鲁肃、马\n', '谡、袁绍、吕阿蒙、公孙\n','瓒\n']
str_s = ''.join(lst_s)

第二步:去除字符串中的换行符号"\n"。

str_w = str_s.replace('\n','')

完成以上两个步骤,前面遇到的四个问题就可以全部解决了。

为方便今后工作中引用,我把以上步骤整理为一个函数,供大家参考。

def l2s (lst_s):
	global var
	str_w = ''.join(lst_s).replace('\n','')
	var = StringVar()
	var.set(str_w)

下面用一个完整实例测试一下。代码如下:

from tkinter import *
root = Tk()
l2s(lst_s)

root.geometry('760x200')
lb = Label(root,textvariable=var,font=(2))
lb.pack(side=LEFT, ,padx=36)
root.mainloop()