Python读取含字符串和数值的文本文件 不使用pandas如何得到目标格式结果?
混合类型文本文件读取解决方案
现有代码问题说明
- 调用
readlines()的问题:仅逐行读取原始字符串,没有去除换行符,也没有按分隔符拆分单个元素,所以返回的是每行的完整带换行符的字符串。 - 普通
open()遍历的问题:一是使用默认按空格拆分的split(),但从输出可知目标文件为逗号分隔格式,需改为split(',');二是没有做类型转换,文件读取的所有内容默认都是字符串类型。
原生Python实现(无需第三方库)
result = [] with open('filedemo.txt', 'r', encoding='utf-8') as f: for line in f: # 去除首尾空白/换行符,按逗号拆分元素 items = line.strip().split(',') processed = [] for item in items: # 尝试转整数,失败则试转浮点数,再失败保留原字符串 try: processed.append(int(item)) except ValueError: try: processed.append(float(item)) except ValueError: processed.append(item) result.append(processed) print(result)
运行后输出格式完全匹配你给出的目标结构,数值会自动转为对应数字类型,字符串保持原样。
NumPy实现
如果可以使用NumPy,可参考如下写法:
import numpy as np # 按逗号分隔读取所有内容为字符串数组 raw_arr = np.genfromtxt('filedemo.txt', delimiter=',', dtype=str, encoding='utf-8') result = [] for row in raw_arr: processed_row = [] for item in row: try: processed_row.append(int(item)) except ValueError: try: processed_row.append(float(item)) except ValueError: processed_row.append(item) result.append(processed_row) # 如需转为NumPy对象数组,可执行:result = np.array(result, dtype=object) print(result)
内容的提问来源于stack exchange,提问作者Angel Lira
相关产品推荐
相关产品推荐

