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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:24:03