Как я могу получить тот же результат для re.findall и re.finditer в регулярных выражениях?

#python #python-3.x #nsregularexpression

#питон #python-3.x

Вопрос:

Тема

Я хотел бы извлекать слова или цитаты с цитатами без цитат, используя re.finditer() функцию, а не re.findall().

 text = 'This is a very "sweet" and "beautiful" cake.'  -gt; ['sweet', 'beautiful']  

выведите проблему

re.finditer() Функция возвращается с котировками, и я понятия не имею, как избавиться от верхних и нижних двойных котировок.

 ['sweet', 'beautiful'] ['"sweet"', '"beautiful"']  

Код

 import re text = 'This is a very "sweet" and "beautiful" cake.' all = re.findall('"(.*?)"', text) print(all)  all_obj = re.finditer('"(.*?)"', text) result = [] for obj in all_obj:  result.append(obj.group()) print(result)  

То, что я пытался сделать

Без зачистки, есть ли какое-либо решение для устранения этой проблемы?

 final_result = [] for word in result:  final_result.append(word.rstrip('"').lstrip('"')) print(final_result)  ['sweet', 'beautiful']  

Комментарии:

1. Что не так с вашим текущим решением?

Ответ №1:

Пожалуйста, используйте .group(1) для сопоставления и извлечения вашей группы:

 result.append(obj.group(1))