怎末将列表格式的字符串转变为列表

 ###### 问题遇到的现象和发生背景
我用python在写学生通讯录系统,功能就是1.添加2.删除3.修改4.查询5.获取所有学生通讯信息6.退出系统。然后单次运行的话 所有功能都能实现了已经。但是一旦第二次运行数据就需要重新添加,想建立txt存储数据。
 ###### 问题相关代码,请勿粘贴截图

def addstudent():
    file = open('stu.txt','w')               #存储数据到文件夹中
    name = input("输入要添加的姓名:")
    for i in ls :
        if i !={}:
            if i ['姓名']==name:
                print("存在此人")
                break
    else:
        sex = input("性别:")
        telephone = input("电话号码:")
        dt = {"姓名": name, "性别": sex, "电话": telephone}
        ls.append(dt)

    # dt1[name]= {"姓名": name, "性别": sex, "电话": telephone}
        print("添加成功,内容为:姓名:{},性别:{},电话:{}".format(name,sex,telephone))
       #互换键和值
        print(dt)
        print(dt1)
        print(ls)
    file.write(str(ls))
    file.close()
a=[]
def delstudent():
    file = open('stu.txt', 'r+')
    for line in file:
        a.append(line)
        print(a)
        print(type(a))

    name1 = input("输入删除者的姓名")
    for i in a:
        print(i)

        for j in i:                                                     #本来以为输出只要“长相”和存储进去时的一样就能照常用,结果类型完全不一样
            print(j)
            if j!={}:
                if j['姓名']==name1:
                    print("删除成功\n删除的内容为:姓名:{},性别:{},电话:{}".format(i['姓名'], i['性别'], i['电话']))
                    j.clear()
                    file.write(str(i))
                    print(a)
                    file.close()
                    break
        else:
                print("查无此人\n请重新选择操作")


 ###### 运行结果及报错内容
string indices must be integers
字符串索引必须是整数,转换的结果还是字符串
 ###### 我的解答思路和尝试过的方法
于是我用1.添加时用open('stu.txt','w'),添加的内容必须将列表(我用的时列表里字符串的方式存储)转换为字符串。但是2.删除时,我想从stu.txt读出文件时,读出的成为字符串就没法再用遍历列表的方法。我也成功将stu里的文件用列表格式输出,但是原先的列表内容在新列表输出时还是字符串。就没办法去遍历他找到相对应的同学信息
 ###### 我想要达到的结果
存储同学的信息,姓名,性别,电话。实现这个程序。
-

用eval转换list=eval(str)

【有帮助请采纳】
可以用 int() 函数去把字符串转换为整数型,如:

a = '3'#现在a是一个字符串
a = int(a)#转换后a是一个整型数字

也可以用 eval() 函数:

a = '3'#现在a是一个字符串
a = eval(a)#转换后a是一个整型数字

eval() 函数可以自动识别字符串的内容并转换为相应的类型:

a = '3.1415'#现在a是一个字符串
a = eval(a)#转换后a是一个浮点型数字

【有帮助请采纳】