Как сделать вложенный список из разделенной строки в текстовом файле? - PullRequest
3 голосов
/ 29 сентября 2019

Я хочу разделить каждую строку в моем текстовом файле на 3 части символом пробела "", и превратить эти 3 части в список для каждой строки, и сделать все эти списки большим списком

мой текстовый файл:

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]]

Кто-нибудь знает, как это исправить? спасибо до

1 Ответ

2 голосов
/ 29 сентября 2019

Попробуйте:

with open('data.txt', 'r') as myTxt:
    dataList = [i.strip().split() for i in myTxt.readlines()]

Вывод :

[['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 = [[' '.join([i, j]), k] for i,j,k in 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']]

Если вы хотите получить вышеуказанный результат в одну строку, вы можете сделать это:

with open('test2.txt', 'r') as myTxt:
    dataList = [[' '.join(i.strip().split()[:-1]),i.strip().split()[-1]] for i in in myTxt.readlines()]
...