Python Regex Найти слово со случайным пробелом, смешанным в - PullRequest
0 голосов
/ 28 мая 2020

Как написать регулярное выражение для соответствия указанному c слову в строке, когда в строку добавлены пробелы в случайных местах?

У меня есть строка, извлеченная из PDF-документ, имеющий табличную структуру. Как следствие этой структуры извлеченная строка содержит случайно вставленные новые строки и пробелы. Специфические c слова и фразы, которые я ищу, содержат символы в правильном порядке, но случайным образом разделены пробелами. Например: «sta ck over flow».

Содержимое документа pdf было извлечено с помощью PyPDF2, поскольку это единственный вариант, доступный в библиотеке python моей компании.

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

Вот пример того, что я пытался делать.

my_string = "find the ans weron sta ck over flow" 
# r's\s*t\s*a\s*c\s*k\s*'  # etc
my_cleaned_string = re.sub(r's\s*t\s*a\s*c\s*k\s*', '', my_string)

Есть предложения?

Ответы [ 2 ]

2 голосов
/ 28 мая 2020

Лучшее, что вы, вероятно, можете сделать здесь, - это просто удалить все пробелы и затем искать целевую строку внутри вырезанного текста: не будет знать, является ли пробел фактической границей слова или просто вставленным случайным пробелом. Таким образом, вы действительно можете найти цель только в виде подстроки в вырезанном тексте. Обратите внимание, что вводимый текст 'rust acknowledge' теперь будет соответствовать положительному значению stack.

1 голос
/ 28 мая 2020

На самом деле то, что вы делаете , - это лучший способ. Единственное, что я могу предложить, - это динамически построить такое регулярное выражение из слова:

word = "stack"
regexp = r'\s*'.join(word)
my_string = "find the ans weron sta ck over flow" 
my_cleaned_string = re.sub(regexp, '', my_string)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...