RegEx: есть ли способ извлечь все подстроки, заключенные в одинарные кавычки, без извлечения подстрок между апострофами?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 RegEx: есть ли способ извлечь все подстроки, заключенные в одинарные кавычки, без извлечения подстрок между апострофами?

Сообщение Anonymous »

По сути, у меня есть набор данных, содержащий операторы на английском языке. Некоторые утверждения содержат начальные/конечные знаки препинания, поэтому я хотел бы очистить и стандартизировать их. Критерием стандартизации является то, что все начальные/конечные знаки препинания удалены, первый символ оператора пишется с заглавной буквы, а оператор заканчивается точкой. У меня есть функция, которая делает это и применяет ее к каждой строке набора данных.
Вот фрагмент, если это поможет:

Код: Выделить всё

def normalize_statement(statement):
# remove leading/trailing punctuation and excess whitespace
cleaned = statement.strip(whitespace + punctuation)
cleaned = re.sub(r'\s+', ' ', cleaned)

# capitalize first letter
cleaned = cleaned[0].upper() + cleaned[1:]

# ensure the statement ends with a period
if cleaned and not cleaned.endswith('.'):
cleaned += '.'
return cleaned
Эта функция работает для базовых операторов, но не всегда работает с подстроками, заключенными в двойные или одинарные кавычки, особенно если подстрока в кавычках появляется в начале и/или конце оператора. потому что тогда одна из кавычек будет удалена после удаления ведущей пунктуации (т. е. "это" является утверждением станет "Это" является утверждением"). Целью должно быть сохранение кавычки вокруг любой подстроки после очистки.
Я думал об использовании регулярного выражения для захвата всех подстрок, заключенных в одинарные или двойные кавычки, замените все кавычки подстроки захваченными группами, чтобы удалить кавычки , стандартизируйте оператор, а затем верните подстроки в кавычки на их исходные позиции. Вот обновленная функция:

Код: Выделить всё

def normalize_statement(statement):
# extract any and all substrings enclosed in quotation marks
quoted_pattern = re.compile(r'["\'](.*?)["\']')
quoted_substrings = quoted_pattern.findall(statement)

# replace the quoted substrings with the captured groups
cleaned = re.sub(quoted_pattern, lambda m: m.group(1), statement)

# remove leading/trailing punctuation and excess whitespace
cleaned = cleaned.strip(whitespace + punctuation)
cleaned = re.sub(r'\s+', ' ', cleaned)

# capitalize first letter for languages that use capitalization
cleaned = cleaned[0].upper() + cleaned[1:]

# ensure the statement ends with a period
if cleaned and not cleaned.endswith('.'):
cleaned += '.'

# replace quoted substrings (if any) back into their original positions after cleaning
for quoted_substring in quoted_substrings:
cleaned = re.sub(re.escape(quoted_substring.strip(whitespace + punctuation)), f'\"{quoted_substring}\"', cleaned, flags=re.IGNORECASE)

return cleaned
Хотя шаблон регулярного выражения ["\'](.*?)["\'] иногда работает (т. е. от сотрудников «ожидается», что они будут проявлять «бережливость». ), он не подходит для таких утверждений, как «Нет места лучше дома, подчеркивающего уникальный комфорт собственного окружения». потому что захваченная группа в этом случае будет подстрокой между апострофами: «Нет места лучше дома, что подчеркивает уникальный комфорт человека».
Я хочу, чтобы захватывался только текст между кавычками. — но как мне отличить апострофы от одинарных кавычек в моем шаблоне регулярного выражения? Я не слишком хорошо знаком с регулярными выражениями, поэтому, если у кого-то есть другой подход, я буду очень признателен!

Подробнее здесь: https://stackoverflow.com/questions/788 ... gle-quotat
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Замените запятые, не заключенные в одинарные кавычки, на символ @.
    Anonymous » » в форуме Php
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Экранируйте только одинарные кавычки (оставляйте только двойные кавычки) с помощью htmlspecialchars()
    Anonymous » » в форуме Php
    0 Ответы
    98 Просмотры
    Последнее сообщение Anonymous
  • Схема извлечения подстроки regex regex java
    Anonymous » » в форуме JAVA
    0 Ответы
    0 Просмотры
    Последнее сообщение Anonymous
  • Java Regex выдает все строки, кроме тех, которые заключены в одинарные кавычки
    Anonymous » » в форуме JAVA
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Java Regex выдает все строки, кроме тех, которые заключены в одинарные кавычки
    Anonymous » » в форуме JAVA
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»