Я использовал пустой список для нарезки и форматирования строк.
Но я не хочу видеть некоторые строки в результате.
Пример: я не хочу показывать ' 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()
Результат:
Я надеюсь, что это может выглядеть так: