python - 将数据读取到内部列表
问题描述
在文本文件中,数据为:
#
2.1,-3.1
-0.7,4.1
#
3.8,1.5
-1.2,1.1
我想将它读入嵌套列表,并且列表应该包含以下形式的数据:
[[[2.1,-3.1],[-0.7,[4.1]],[[3.8,1.5],[-1.2,1.1]]]
也就是说,
每个 # 开始一个内部列表
每个新行都开始一个内部列表。
下一个 # 关闭前一个内部列表并创建新的内部列表。
此外,数据为字符串格式,需要转换为浮点值。我写了以下代码:
def read_weights(file_name): # 1 Mark
file = open(file_name)
res = []
for line in file:
m = []
if '#' in line.strip():
pass
else:
x = line.split()
for i in x:
y = i.split(',')
i = 0
for c in y:
m.insert(i, float(c))
i = i + 1
if m != []:
res .append(m)
file.close()
return res
w_example = read_weights('example_weights.txt')
print(w_example)
输出是:
[[2.1, -3.1], [-0.7, 4.1], [3.8, 1.5], [-1.2, 1.1]]
在每个 # 之后,我无法创建内部列表。
解决方案
这是一种使用负索引来访问最后插入的列表的方法。
前任:
result = []
with open(filename) as infile:
for line in infile:
line = line.strip()
if line == "#":
result.append([])
else:
line = list(map(float, line.split(",")))
result[-1].append(line)
print(result)
输出:
[[[2.1, -3.1], [-0.7, 4.1]], [[3.8, 1.5], [-1.2, 1.1]]]
推荐阅读
- android - picasso 或 glide 不支持 jpeg 图像格式
- docker - docker compose 中的 NSQD
- r - corrplot 中的显着性值
- tsql - 检查上一条和下一条记录
- python-2.7 - 如何将包含两个步骤的命令的输出发送到文件?
- css - CSS - box-sizing:border-box 仍然为整体高度添加边框
- c#-4.0 - “应用程序处于中断模式” C# 使用 throw 冒泡异常时
- python - flask test_client 为有效的 url 返回 404
- sas - 如何使规范的 PROC CALIS LINEQS 示例工作?
- html - 提供使用 HTML 将项目添加到日历的选项 - 仅限 Outlook