Как перебрать лист Excel в зависимости от того, содержит ли значение ячейки определенный символ - PullRequest
1 голос
/ 02 ноября 2019

Я пытаюсь написать скрипт, который будет удалять строки в зависимости от того, содержит ли соответствующее значение ячейки строки в первом столбце определенный символ, в данном случае '#'.

Я пыталсянаписать следующую функцию, которая, как мы надеемся, будет перебирать лист и возвращать новый лист с удаленными строкамиLabSample - это лист, на котором я работаю.

def remove_headers():
    for rowNum in range(2, LabSample.max_row):
        sys_sample_code = LabSample.cell(row=rowNum, column=1).value
        if '#' not in sys_sample_code:
            continue
        else:
            LabSample.delete_rows(rowNum, 1)
    return LabSample

for row in LabSample.rows:
    print(row[0].value)

В настоящее время я не получаю никаких сообщений об ошибках, но вывод, который я получаю, не изменяется от ввода. Похоже, что ни одна строка не была удалена.

Ответы [ 2 ]

0 голосов
/ 02 ноября 2019

Я бы, вероятно, сделал это, импортировав таблицу в numpy, а затем проиндексировав строки, содержащие '#', и, наконец, использовал бы np.delete, чтобы удалить строки, прежде чем вернуть их туда, откуда они пришли.

Вот короткий пример, который как бы демонстрирует то, о чем я говорю. просто замените начальный массив «x» на ваш массив данных и проанализируйте интересующий вас столбец.

import numpy as np

x = np.array(
        [1,2,5,'a','#test1', 'b', 7, '#test2', 9]
         )

index = {count: pos for count, pos in enumerate(x) if '#' in pos[:]}

x = np.delete(x, list(index.keys()))


In [17]: x
Out[17]: array(['1', '2', '5', 'a', 'b', '7', '9'], dtype='<U11')

0 голосов
/ 02 ноября 2019

Попробуйте привести sys_sample_code как str ()

#...
sys_sample_code = LabSample.cell(row=rowNum, column=1).value
        if '#' not in str(sys_sample_code): # SEE EDIT HERE
        # ...
...