как удалить все вхождения символа в список 3d python, поступающий из файла - PullRequest
0 голосов
/ 05 августа 2020

Код python:

resolution = (4,4,4)
permList = []
with open("perm.txt",'r') as perm:
    file_lines = list(perm)
    for i in range(0, len(file_lines), resolution[2]):
        permList.append([list(line.rstrip()) for line in file_lines[i:i+resolution[2]]])

print(permList)

Я пытаюсь создать трехмерный список в python, значения взяты из файла .txt.

Файл "perm.txt":

1   1   1   1
1   1   1   1
1   1   1   1
1   1   1   1
1   1   1   1
1   1   1   1
1   1   1   1
1   1   1   1
1   1   1   1
1   1   1   1
1   1   1   1
1   1   1   1
1   1   1   1
1   1   1   1
1   1   1   1
1   1   1   1

Этот код приводит к журналу:

[[['1', '\t', '1', '\t', '1', '\t', '1'], ['1', '\t', '1', '\t', '1', '\t', '1'], ['1', '\t', '1', '\t', '1', '\t', '1'], ['1', '\t', '1', '\t', '1', '\t', '1']], [['1', '\t', '1', '\t', '1', '\t', '1'], ['1', '\t', '1', '\t', '1', '\t', '1'], ['1', '\t', '1', '\t', '1', '\t', '1'], ['1', '\t', '1', '\t', '1', '\t', '1']], [['1', '\t', '1', '\t', '1', '\t', '1'], ['1', '\t', '1', '\t', '1', '\t', '1'], ['1', '\t', '1', '\t', '1', '\t', '1'], ['1', '\t', '1', '\t', '1', '\t', '1']], [['1', '\t', '1', '\t', '1', '\t', '1'], ['1', '\t', '1', '\t', '1', '\t', '1'], ['1', '\t', '1', '\t', '1', '\t', '1'], ['1', '\t', '1', '\t', '1', '\t', '1']]]

Я хотел бы знать, как удалить табуляцию '\ t', без изменений трехмерная структура, цель:

[[['1', '1', '1', '1'], ['1', '1', '1', '1'], ['1', '1', '1', '1'], ['1', '1', '1', '1']], [['1', '1', '1', '1'], ['1', '1', '1', '1'], ['1', '1', '1', '1'], ['1', '1', '1', '1']], [['1', '1', '1', '1'], ['1', '1', '1', '1'], ['1', '1', '1', '1'], ['1', '1', '1', '1']], [['1', '1', '1', '1'], ['1', '1', '1', '1'], ['1', '1', '1', '1'], ['1', '1', '1', '1']]]

Спасибо!

Ответы [ 2 ]

0 голосов
/ 05 августа 2020

Используйте:

list(filter(lambda c: c != '\t', line.rstrip())

в 6-й строке

0 голосов
/ 05 августа 2020

Вы можете l oop для каждого списка внутри основного списка, а затем использовать оператор if, чтобы проверить, является ли элемент списка \ t, затем pop () it, если он истинен.

for i in range(len(L)):
  for j in range(len(L[0]):
    for k in range(len(L[0][0]):
      if L[i][j][k] == "\t":
        L[i][j].pop(k)

Где L - ваш 3D-список

...