如何读取txt文本文件内容并转换为元素为float类型的列表?
问题根源
- 直接按逗号拆分的方案未处理内容首尾的方括号、元素前的多余空格,也没有做浮点类型转换,最终得到的是携带多余符号的字符串列表。
- 使用
ast.literal_eval报错是因为错误传入了拆分后的列表,该方法仅支持传入符合Python字面量语法的原始字符串。
解决方案
方案1:直接用ast.literal_eval解析(推荐)
你的txt内容本身就是标准的Python列表字面量格式,直接解析整个读取到的字符串即可,无需提前拆分:
import ast # 用上下文管理器读取文件更安全,会自动关闭文件 with open(r"data.txt", "r", encoding="utf-8") as my_file: content = my_file.read().strip() result_list = ast.literal_eval(content)
方案2:手动清洗转换
如果不想依赖ast库,也可以手动处理字符串后转换:
with open(r"data.txt", "r", encoding="utf-8") as my_file: content = my_file.read().strip() # 先去掉首尾的方括号 content = content.strip("[]") # 按逗号拆分后,逐个去除空格、转成float,过滤空值适配末尾多逗号的情况 result_list = [float(item.strip()) for item in content.split(",") if item.strip()]
两种方案最终得到的result_list就是你需要的全float类型的目标列表。
内容的提问来源于stack exchange,提问作者maximus
相关产品推荐
相关产品推荐

