ListVar = original[:]
Это делает поверхностную копию ListVar, поэтому ваши изменения в списках второго уровня также повлияют на оригинал. Вы уверены, что это то, что вы хотите? Гораздо лучше было бы создать новый модифицированный список с нуля.
for b in range(len(ListVar)):
for c in range(len(ListVar[b])):
Фу: когда бы ни было возможно, итерируйте непосредственно по спискам.
#If its an int ... remove
try:
int(ListVar[b][c].replace(' ', ''))
ListVar[b][c] = ''
except: pass
Вы хотите игнорировать пробелы в середине чисел? Это не звучит правильно. Если числа могут быть отрицательными, вы можете использовать try..except
, но если они только положительные, просто используйте .isdigit()
.
#if any second sufxList delete
for d in range(len(SufxList)):
if ListVar[b][c].find(SufxList[d]) != -1: ListVar[b][c] = ''
Это просто плохое наименование? SufxList подразумевает, что вы ищете суффиксы, если это так, просто используйте .endswith()
(и обратите внимание, что вы можете передать кортеж, чтобы избежать цикла). Если вы действительно хотите найти суффикс где-нибудь в строке, используйте оператор in
.
for d in range(len(TerminateHook)):
if ListVar[b][c].find(TerminateHook[d]) != -1: ListVar[b][c] = ''
Снова используйте оператор in
. Также any()
полезен здесь.
#remove all '' from list
while '' in ListVar[b]: ListVar[b].remove('')
и while
- это O (n ^ 2), то есть будет медленно. Вместо этого вы можете использовать понимание списка, чтобы убрать пробелы, но лучше просто создать чистые списки для начала.
print(ListVar[b])
Я думаю, возможно, ваш отступ был неправильным на этом отпечатке.
Объединение этих предложений дает примерно следующее:
suffixes = tuple(SufxList)
newListVar = []
for row in original:
newRow = []
newListVar.append(newRow)
for value in row:
if (not value.isdigit() and
not value.endswith(suffixes) and
not any(th in value for th in TerminateHook)):
newRow.append(value)
print(newRow)