将TXT文件导入Python为array时两位数被拆分的问题求助
解决Python导入文件转数组时两位数被拆分的问题
嘿,这问题我之前也碰到过!核心原因大概率是你读取文件时把内容当成单个字符来处理了,而不是把连续的数字当成一个完整的数值。我来给你拆解下问题和解决方案:
常见错误场景(假设你的代码类似这样)
比如你可能写了类似下面的代码,直接把读取到的字符串转成列表,这样每个字符(包括数字的每一位)都会被拆成单独元素:
with open('your_file.txt', 'r') as f: content = f.read() arr = list(content) # 结果会是比如 ['1','2',' ','3','4'] 而不是 [12,34]
针对不同文件格式的解决方案
情况1:文件里的数字用空格/逗号/制表符分隔
比如你的文件内容是这样的:
12 34 56
78 90
可以用两种方式处理:
- 用Numpy快速处理(推荐):Numpy的加载函数会自动识别完整数值:
import numpy as np # 默认空格分隔,若用逗号就加 delimiter=',' arr = np.loadtxt('your_file.txt') # 如果要整数数组,指定 dtype=int arr = np.loadtxt('your_file.txt', dtype=int) - 纯Python手动处理:
with open('your_file.txt', 'r') as f: # 读取所有内容,按空白分割成数值字符串,再转成整数/浮点数 num_strings = f.read().split() arr = [int(num) for num in num_strings] # 浮点数就改成 float(num)
情况2:文件里每行一个数字
比如文件内容是:
12
34
56
处理代码可以这样写:
with open('your_file.txt', 'r') as f: # 逐行读取,跳过空行,转成数值 arr = [int(line.strip()) for line in f if line.strip()]
小提示
- 检查文件里有没有多余的特殊字符(比如换行符、空格以外的分隔符),如果有,要在分割时指定对应的分隔符(比如
split(',')) - 如果是CSV格式文件,也可以用Python内置的
csv模块来读取,更稳妥
内容的提问来源于stack exchange,提问作者Stef Conovali
相关产品推荐
相关产品推荐

