Как исключить указанные c строки из списка? - PullRequest
0 голосов
/ 06 января 2020

Я использовал пустой список для нарезки и форматирования строк.

Но я не хочу видеть некоторые строки в результате.

Пример: я не хочу показывать ' riichard 'и' canturyooo '.

Как я могу установить что-то вроде blacklist для непосредственного добавления в список, чтобы я мог легко исключить слова, которые мне не нужны?

Мне нравится: (Используйте минус (-) для исключения слов)

words = [
    ('riich', 'rich',-'riichard',-'riicharson'),
    ('cantury', 'century',-'canturyooo'),

Является ли Regex единственным способом их исключения?

Или есть какой-то лучший способ сделать это?

Это мой код:

import xlsxwriter
from functools import partial


def x_in_y(word, inner):
    return inner in word


workbook = xlsxwriter.Workbook('hello.xlsx')
worksheet = workbook.add_worksheet()

words = [
    ('riich', 'rich'),
    ('cantury', 'century'),
]
sentence = [
    'riichard dweqrerwr',
    'he is very riich',
    'this is 21st cantury',
    'canturyooo mankind',
]

row = 0

red = workbook.add_format({'font_color': 'red'})
black = workbook.add_format({'font_color': 'black'})

for wrong, correct in words:
    filtered_names = filter(partial(x_in_y, inner=wrong), sentence)
    next_elem = next(filtered_names, None)

    if next_elem:
        worksheet.write(row, 0, f"Typo: {wrong} 'should be {correct}'")
        row += 1
        while next_elem:
            if len(next_elem) == len(wrong):
                worksheet.write(row, 0, next_elem, red)
            else:
                slices = []
                startIndex = 0
                index = next_elem.find(wrong)
                while index != -1:
                    if next_elem[startIndex: index]:
                        slices.append(black)
                        slices.append(next_elem[startIndex: index])
                    slices.append(red)
                    slices.append(next_elem[index: index + len(wrong)])
                    startIndex = index + len(wrong)
                    index = next_elem.find(wrong, startIndex)

                if next_elem[startIndex:]:
                    slices.append(black)
                    slices.append(next_elem[startIndex:])

                worksheet.write_rich_string(row, 0, *slices)
            row += 1
            next_elem = next(filtered_names, None)
workbook.close()

Результат:

enter image description here

Я надеюсь, что это может выглядеть так:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...