如何将一组列表(三个以上,数值类型不一)保存为txt文件

点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

郡邑浮前浦,波澜动远空。

大家好,我是Python进阶者。

一、前言

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

9770e3a636856c4302b15a71f5fd58f6.png这个需求还是挺模糊的,后来仔细多问了几下才明确,这里也号召下大家在提问题的时候,自己也站在别人的角度想想问题,不然你脑袋里边的东西,别人理解起来还是挺难的,虽然你懂,但是表达不出来,别人就得问,增加大家的沟通成本,这样确实不太好,毕竟大家的时间都也挺宝贵。

二、解决过程

这里【大侠】给出了一个具体的示例,针对下方的列表:

lst_1=['a1',2300,1300]
lst_2=['a2',24588,588,368]
lst_3=['a4',35000,387]
lst_4=['a5',35000]
lst_5=['a6',39000,157,'a8',3000,127]
【月神】解答

这里【月神】给出了一份代码,如下:

with open('txtxtx.txt', 'a+', encoding='utf-8') as f:
    f.write(f"{['a1',2300,1300]}\n")

99988d919580f931938701b575a9751b.png实现的结果并不是想要的,但是也很接近了,稍微加个循环,依次写入,问题不大。

【PI】解答

这里【PI】给出了一份代码,如下:

0d5bb1a5621c7fcc6a8760f6a9b5ceb3.png

PS:【冯诚】小伙子在这里皮了下,直接复制粘贴形成文件,hhhhh。不过运行之后,好像有点问题,不知道怎么修改,难顶。

0674beb6acd0b7403e806ad3f2d2684c.png
【瑜亮老师】解答

这里【瑜亮老师】盲猜对方心思,给出了一份代码,如下:

with open('test-18.txt', 'w+') as f:
    for key in list(globals()):
        if key.startswith("lst_"):
            f.write(f'{key} = ' + f'{eval(key)=}\n')

得到的结果如下图所示:

4bed3cbdb10f10287d6c3ab8aa5a47d2.png基本上满足需求,不过多了些东西,希望去掉。因为产品经理只要列表,其他不要。

e059684fbea76f22fc378611cab7764f.png

于是乎,又安排一份代码,如下图所示:

1a1e7a7fd4c9d0d528b5af4f478fc6d8.png一起来看看最新的代码,如下所示:

with open('test-18.txt', 'w+') as f:
    # 把全局变量字典转换为列表,遍历获取全局变量名
    for key in list(globals()):
        # 检测变量名是否以 lst_ 开头
        if key.startswith("lst_"):
            # 使用f-string获取变量的值,转换为字符串,加入换行符。把结果写入文件。
            f.write(f'{eval(key)}\n')
b7cf1e4a8b9044f12ea06576c92b3c28.png

还有注释,小伙伴们直呼好家伙。这里用了两个知识点:遍历全局变量和eval

你以为这就完了?

不,【瑜亮老师】还准备了方法二,一起来看看吧!

# 方法二:通俗易懂版
data = ''
count = 6    # 列表数量+1
for i in range(1, count):
    s = eval(f'lst_{i}')
    data += f'{s}\n'
with open('test-19.txt', 'w+', encoding='utf-8') as f:
    f.write(data)

这个就更简单明了,只用了eval一个知识点,都不用遍历全局变量,直接使用for循环生成列表名,理解起来就容易很多了。

e6bc812c72a456744f576cefefea7b1d.png但是话说回来,这个其实没有第一个方法好,第一个方法只要稍微改一下适用性就比方法二好,方法二只适用于列表名字非常规律。

6b328112b809d66209672b7e944f9927.png这样,该问题就完美收官了!

侠之大者,为国为民!——致敬金庸武侠小说《神雕侠侣》!

三、总结

大家好,我是Python进阶者。这篇文章主要分享了如何将一组列表(三个以上,数值类型不一)保存为txt文件的问题,文章中给出了具体的解析和代码演示,帮助粉丝顺利解决了问题。

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

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

f3e33c1b6f94d3a08b1d9e146b865eb3.png

------------------- End -------------------

往期精彩文章推荐:

cee4e8e2366be0530c7dfa7cb6b1fc8e.png

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【

万水千山总是情,点个【在看】行不行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值