如何读取保存一些list信息的txt,生成有一组名字有规律的list

Python进阶者
• 阅读 654

大家好,我是皮皮。

一、前言

前几天在Python白银交流群有个叫【大侠】的粉丝问了一个Python列表处理的问题,这里拿出来给大家分享下,一起学习下。

请教:如何读取保存一些list信息的txt,生成有一组名字有规律的list,如list1,list2,list3...

如何读取保存一些list信息的txt,生成有一组名字有规律的list

[1,'西游记',''吴承恩',孙悟空','猪八戒','唐僧']
[2,'钢铁是怎样炼成的','奥斯特洛夫斯基','保尔柯察金','冬妮娅']
[3,'红楼梦',''贾宝玉',林黛玉]
[4,'三国演义',''孔明',曹操','关羽','貂蝉']

想处理成:

list1=[1,'西游记',''吴承恩',孙悟空','猪八戒','唐僧']
list2=[2,'钢铁是怎样炼成的','奥斯特洛夫斯基','保尔柯察金','冬妮娅']
list3=[3,'红楼梦',''贾宝玉',林黛玉]
list4=[4,'三国演义',''孔明',曹操','关羽','貂蝉']

这个题目有点尴尬,不知道他具体的实际场景,但是目前就是要这么个效果。

如何读取保存一些list信息的txt,生成有一组名字有规律的list

二、解决过程

【dcpeng】解答

这里【dcpeng】给出了解答,纯粹往结果上靠。

final_lst = []
with open("data.txt", 'r', encoding='utf-8') as f:
    lines = f.readlines()
    for i in range(1, len(lines)+1):
        new_line = f"list{i} = " + lines[i-1]
        print(new_line)
        final_lst.append(new_line)

with open('new_data.txt', 'w', encoding='utf-8') as f:
    for data in final_lst:
        f.write(data + '\n')

如何读取保存一些list信息的txt,生成有一组名字有规律的list

乍一看,确实是完成了任务,不过似乎没没有完成需求。

如何读取保存一些list信息的txt,生成有一组名字有规律的list

看似解决,还需优化。

【月神】解答

这里【月神】给了一个答案,用到了exec()函数,如下图所示:

如何读取保存一些list信息的txt,生成有一组名字有规律的list

【瑜亮老师】解答

这里【瑜亮老师】也给出了一个代码,也用到了exec()函数,如下所示:

with open('shouju03.txt', 'r',encoding='utf-8') as f:
    data = f.readlines()

for k, v in enumerate(data):
    value = eval(v)
    exec(f"list_{k+1}={value}")
print(list_1)
print(list_2)
print(list_3)
print(list_4)

如何读取保存一些list信息的txt,生成有一组名字有规律的list

代码截图:

如何读取保存一些list信息的txt,生成有一组名字有规律的list

细心的小朋友们可能已经发现了,不论是【月神】还是【瑜亮老师】的代码截图里边,变量list1、list2、list3、list4打印的时候都带了红色的下划线,按说我们在pycharm中遇到红色下划线是报错的节奏,其实在这里并不是的,需要稍微注意一下。本质原因是exec()函数执行之后,是没有返回值的,所以在pycharm中找不到对应的值,会提示红色的下划线告警,但是实际上不是报错。与之对应的eval()函数是有返回值的,这点是它们两个内置函数最大的区别。

最后放个【瑜亮老师】的完整的代码:

# txt文件内容如下:
# list1=[1, '西游记', '吴承恩', '孙悟空', '猪八戒', '唐僧']
# list1=[2, '钢铁直男', '拖拉机', '保尔', '冬妮娅']
# list1=[3, '红楼梦', '贾宝玉', '林黛玉']
# list1=[4, '三国演义', '孔明', '诸葛亮', '军师', '中路法师']

with open('shouju03.txt', 'r',encoding='utf-8') as f:
    data = f.readlines()
print('下面是批量生成列表变量,并直接赋值')
for k, v in enumerate(data):
    # 这里使用字符串切片去除文件中每行前面多余的字符串
    # 并调用eval方法把字符串变为列表
    value = eval(v[6:])
    # 生成变量并赋值
    exec(f"list_{k+1} = {value}")
    # 直接调用变量,输出它的值
    print(f"list_{k+1} = {value}")
print('下面是直接调用变量')
print('list_1 =', list_1)
print('list_2 =', list_2)
print('list_3 =', list_3)
print('list_4 =', list_4)

这块还是蛮考验Python基础的,基础不牢,地动山摇!

如何读取保存一些list信息的txt,生成有一组名字有规律的list

三、总结

大家好,我是皮皮。这篇文章针对如何读取保存一些list信息的txt,生成有一组名字有规律的list的问题,给出了具体的解析和代码演示,帮助粉丝顺利解决了问题。

最后感谢粉丝【大侠】提问,感谢【dcpeng】、【瑜亮老师】、【月神】给出的具体解析和代码演示,感谢【黑脸怪】、【冫马讠成】、【猫药师Kelly】、【PI】等人参与学习交流。

小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

点赞
收藏
评论区
推荐文章
Python进阶者 Python进阶者
2年前
编写一个闭包函数,要实现的功能是计数功能
大家好,我是皮皮。一、前言前几天在Python最强王者交流群有个叫【杰】的粉丝问了一个Python装饰器的问题,这里拿出来给大家分享下,一起学习下。二、解决过程这里【东哥】给出了解答,其实这个题目就是在考你装饰器的内容。代码如下:count0defwrapper(func):definner(args,kwargs):g
Python进阶者 Python进阶者
2年前
Python列表中的深浅拷贝,你学废了嘛?
大家好,我是皮皮。一、前言前几天在Python最强王者交流群有个叫【Chloe】的粉丝问了一个Python深浅拷贝的问题,这里拿出来给大家分享下,一起学习下。二、解决过程深浅拷贝这个东东在列表中挺烦人的,傻傻分不清楚,不过不慌,明白了之后,就不难了。那么再看上面那道题目,【Chloe】先copy了才改变了list1的值,所以lst2的第二个元素还是20。
Python进阶者 Python进阶者
2年前
Python中的and和or,结果让人出乎意料之外
大家好,我是皮皮。一、前言前几天在Python最强王者交流群有个叫【Chloe】的粉丝问了一个Python基础的问题,关于and和or,这里拿出来给大家分享下,一起学习下。二、解决过程这里【杰】给出了解答,其实Python中,除括号外,and优先级较高,那么这里的话【瑜亮老师】也给出了解答,确实没有括号,表达式从左往右运算,and比or优先级高,先算an
Python进阶者 Python进阶者
2年前
盘点一个`07Apr2022`格式日期转换的基础题目
大家好,我是皮皮。一、前言前几天在Python星耀交流群有个叫【wangning】的粉丝问了一道Python日期转换的问题,这里拿出来给大家分享下,一起学习下。二、解决过程【瑜亮老师】解答这里给出了一个比较笨拙的方法,但是确实行之有效,使用了字符串处理字典处理的方法。defchange(d):monthdict"Apr":
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Python进阶者 Python进阶者
2年前
把一个csv数据文件,第一行头文件(字段名)不变,按某列(第四列)降序排列,另行保存为csv 文件
大家好,我是皮皮。一、前言前几天在Python白银交流群有个叫【大侠】的粉丝问了一个关于Python自动化办公的问题,这里拿出来给大家分享下,一起学习。把一个csv数据文件,第一行头文件(字段名)不变,按某列(第四列)降序排列,另行保存为csv文件。二、解决过程【dcpeng】解答这里给出了一个思路,传统的常规思路,虽然很low,但是可行。【德善堂
Python进阶者 Python进阶者
2年前
盘点一道Pandas中分组聚合groupby()函数用法的基础题
大家好,我是皮皮。一、前言前几天在Python最强王者交流群有个叫【Chloé】的粉丝问了一个关于Pandas中groupby函数的问题,这里拿出来给大家分享下,一起学习。这个粉丝在法国留学,所以提问是英文的,当然了英文看上去也不难,有点二级英文基础,也看得懂,实在不行,在线翻译一下也问题不大了。二、解决过程这里给出【dcpeng】大佬和【月神】的解答。
Python进阶者 Python进阶者
2年前
盘点一个Pandas数据清洗题目
大家好,我是皮皮。一、前言前几天在Python白银交流群有个叫【冻豺】的粉丝问了一道Python清洗数据的问题,这里拿出来给大家分享下,一起学习下。如何才能把pandasserise里乱七八糟的字符清理干净呢?二、解决过程【dcpeng】解答这里给出了一个示例的代码,使用了apply和lambda和正则表达式,一气呵成,只需要稍微修改下,匹配自己的数
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
Python进阶者 Python进阶者
2个月前
如何把一个python列表(有很多个元素)变成一个excel表格的第一列?
大家好,我是Python进阶者。一、前言前几天在Python最强王者群有个叫【麦当】的粉丝问了一个关于Python如何把一个python列表(有很多个元素)变成一个excel表格的第一列的问题,这里拿出来给大家分享下,一起学习。二、解决过程这里给出【dcp