我有一个 txt 文件,其中有 3 列浮点数需要导入,但需要用列和空行分隔。
例如txt文件数据如下
1.0 1.1 1.2
1.3 1.4 1.5
2.0 2.1 2.2
2.3 2.4 2.5
我需要将数据导入到Python中
column 1-1: 1.0, 1.3
column 2-1: 1.1, 1.4
column 3-1: 1.2, 1.5
column 1-2: 2.0, 2.3
column 2-2: 2.1, 2.4
column 3-2: 2.2, 2.5
我能够导入 txt 文件并使用按列分隔
a,b,c = np.loadtxt('file.txt', dtype=float, unpack=True)
但此方法不会读取空行,我无法进一步用空行分隔数据。
那么为什么不为此制定自己的算法呢?在我看来,以某种方式配置 numpy 或为其获取模块要容易得多。我不得不花 5 分钟思考并为此制定一个算法
def parse_file(file_data):
all_numbers = []
current_number = ""
current_number_group: list[float] = []
for letter in file_data:
if letter == "\n":
all_numbers.append(current_number_group)
current_number_group = []
elif letter == " " and current_number != "":
current_number_group.append(float(current_number))
current_number = ""
elif letter != " ":
current_number += letter
if current_number != "":
current_number_group.append(float(current_number))
return all_numbers
这个算法不使用numpy(我使用的是在线解释器rn,所以我无法安装软件包)而且它也很慢,所以你最好制作自己的版本。