Я пытаюсь удалить пунктуацию (кроме - &.) С помощью регулярных выражений.Вход для удаления пунктуации - это предварительно обработанный токен.Тем не менее я получаю синтаксическую ошибку (SyntaxError: неверный синтаксис) для моего кода.Где мне нужно изменить, чтобы исправить синтаксическую ошибку?
Я попытался исправить это, изменив регулярное выражение.Я относительно новичок в регулярных выражениях.Некоторые рекомендации могут помочь мне исправить ошибку или определить мои ошибки.
Мой код выглядит следующим образом:
regex = re.compile('[%s]' % re.escape(string.punctuation))
token_without_punctuation = []
for x in tokenized_doc1:
y = []
for token in x:
tokens = regex.sub(ur"\p{P}(?<![\-.])", "", token)
y.append(tokens)
token_without_punctuation.append(y)
print(token_without_punctuation)
Для моего кода введите следующие данные:
[['The', 'intelligent', 'directory', 'enquiry', 'assistant', '(', 'YPA', ')', 'project', 'is', 'an', 'example', '(', 'going', 'back', 'quite', 'a', 'few', 'years', 'now', '...', ')', 'where', 'the', 'extraction', 'of', 'information', 'from', 'partially', 'structured', 'data', 'together', 'with', 'engineering', 'issues', 'played', 'major', 'roles', 'in', 'making', 'the', 'YPA', 'a', 'usable', 'online', 'system', '.'], ['I', 'am', 'developing', 'techniques', 'that', 'allow', 'the', 'extraction', 'of', 'conceptual', 'information', 'from', 'document', 'collections', 'and', 'the', 'utilization', 'of', 'such', 'knowledge', 'in', 'retrieval', 'tasks', '.'], ['The', 'type', 'of', 'documents', 'can', 'range', 'from', 'Web', 'pages', 'to', 'newspaper', 'articles', 'or', 'other', 'forms', 'of', 'vaguely/partially', 'structured', 'data', '.']]
Ошибка заключается в следующем
File "<ipython-input-108-0c96ff0d8e79>", line 10
tokens = regex.sub(ur"\p{P}(?<![\-.])", "", token)
^
SyntaxError: invalid syntax
Было бы здорово, если бы кто-то помог выявить мои ошибки.
Дополнительная информация:
Я также пробовал использовать приведенный ниже код.
tokens = regex.sub(u'', token)
if not token == u'':
Вышеупомянутые строки исправляют ошибку, но она удаляет все знаки пунктуации.Я также пытался с tokens = regex.sub(u'\p{P}(?<![\-.])', token)
.В этом случае я получаю еще одну ошибку, которая выглядит следующим образом:
TypeError: 'str' object cannot be interpreted as an integer
Как я могу удалить знаки препинания (кроме и -) без получения ошибки?