【发布时间】:2019-09-29 16:24:29
【问题描述】:
我想通过空格字符“”将我的 txt 文件中的每一行分成 3 个部分,并将这 3 个部分组成每一行的列表,并将所有这些列表组成一个更大的列表
我的 txt 文件:
1998/04/20 17:38:51.604 16.863014
1998/04/20 17:38:52.204 1.947639
1998/04/20 17:38:54.404 27.278648
1998/04/20 17:39:02.605 0.325151
1998/04/20 17:39:04.705 7.002871
我的代码:
dataList = []
metaData = ['', '', '']
with open('data.txt', 'r') as myTxt:
for line in myTxt:
metaData[0] = line.split(' ')[0]
metaData[1] = line.split(' ')[1]
metaData[2] = line.split(' ')[2]
dataList.append(metaData)
print(dataList)
我希望输出是这样的:
[[1998/04/20, 17:38:51.604, 16.863014],
[1998/04/20, 17:38:52.204, 1.947639],
[1998/04/20, 17:38:54.404, 27.278648],
[1998/04/20, 17:39:02.605, 0.325151],
[1998/04/20, 17:39:04.705, 7.002871]]
但我得到的是这样的:
[[1998/04/20, 17:39:04.705, 7.002871],
[1998/04/20, 17:39:04.705, 7.002871],
[1998/04/20, 17:39:04.705, 7.002871],
[1998/04/20, 17:39:04.705, 7.002871],
[1998/04/20, 17:39:04.705, 7.002871]]
有人知道如何解决这个问题吗?谢谢之前
【问题讨论】:
-
我找到了this answer,它解释了这里发生的事情。
dataList基本上充满了对metadata的引用。请注意,metadata本身并未重新分配给新列表。它总是指向内存中的同一个地方。只是它的价值观正在改变。因此,dataList中的旧值将与metadata一起更改,因为它们都引用内存中的同一个列表。 -
@eyllanesc 啊,我明白了,谢谢你的信息。你知道如何让我的代码只需要一些小改动就可以工作吗?
-
@prasetya223 我只编辑了你的问题