You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取文件并按正确值类型存入列表的实现问题

解决Python读取文件时区分字符串与整数类型的问题

问题描述

读取文件时需要将每行内容存入列表,但当前代码会把每行整体存为字符串,无法得到包含对应类型(字符串、整数)元素的嵌套列表。

当前代码:

def build_sets(f):
   
    lista_valores = []

    with open(f, 'r') as f:
        for line in f:
            lista_valores += line.strip().split('\n')

    print(lista_valores)
    #pass

当前输出示例:["a 1", "b 2", "c 3"](每行作为单个字符串元素)
预期输出示例:[['a', 1], ['b', 2], ['c', 3]](每行拆分为字符串和整数类型的子列表)

解决方案

核心思路是:先拆分每行的元素,再对每个元素进行类型转换(能转整数的转成整数,否则保留字符串),最后将处理后的行作为子列表存入总列表。

修正后的代码:

def build_sets(f):
    lista_valores = []
    with open(f, 'r') as file:
        for line in file:
            # 去除首尾空白,按空白字符拆分每行的元素
            elements = line.strip().split()
            processed_line = []
            for item in elements:
                # 尝试将元素转为整数,失败则保留原字符串
                try:
                    processed_line.append(int(item))
                except ValueError:
                    processed_line.append(item)
            lista_valores.append(processed_line)
    print(lista_valores)

代码说明

  • line.strip().split():去除每行首尾的空白字符(换行、空格等),再按任意空白字符(空格、制表符)拆分出单个元素,避免因多空格导致的分割错误。
  • try-except判断:通过捕获ValueError来区分字符串和整数,确保数字类型被正确转换,字符串类型保持原样。
  • append(processed_line):将每行处理后的子列表加入总列表,形成嵌套结构,符合预期输出格式。

内容的提问来源于stack exchange,提问作者João Prata

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 15:01:11