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
相关产品推荐
相关产品推荐

