Удаление всех символов, кроме символов подчеркивания и дефиса для текстового файла в Python - PullRequest
2 голосов
/ 12 июня 2019

Я хочу удалить все специальные символы (в том числе один алфавит в нижнем регистре) для входного файла, кроме слов с символами подчеркивания (_) и дефиса (-) (пример добавлен), используя с или без регулярное выражение для неоткрытого список (список списков)?

Существует ли способ?

import re
from nltk import word_tokenize
from nltk.corpus import stopwords

data = {'fresh air', 'entertainment system', 'ice cream', 'blood pressure', 'body temperature', 'car', 'ac', 'air quality'}
data = {i: i.replace(" ", "_") for i in data}
pattern = re.compile(r"\b("+"|".join(data)+r")\b")

text_file = ['https://stackoverflow.com/questions', 'www.google.com/the pda', 'Z\'s is (vitamin-d) in (milk) 5 ml "enough", carrying? 321 active automatic body hi+al blood pressure.', 'body temperature [try] to improve air quality level by automatic intake of fresh air.', 'blood pressure monitor', 'I buy more ice cream', 'proper method to add frozen wild blueberries in ice cream']
sw0 = (stopwords.words('english'))
sw1 = ["i", "hi"]
sw=sw0+sw1
result = [pattern.sub(lambda x: "{}".format(data[x.group()]), i) for i in text_file]
tokens = [[word.lower() for word in word_tokenize(word)] for word in result]
filtered_tokens = [[token for token in sentence if (token not in sw)] for sentence in tokens]
print(filtered_tokens)

Ввод отображается в текстовом файле в коде.

Я хочу, чтобы вывод отображал только слова (сохраняя некоторые слова с подчеркиванием между ними, такие как body_temperam, blood_pressure, air_quality и т. Д.).

Я попытался и завершил работу, используя regexp_tokenize с regex pattern и установкой gaps = True. Я хочу добиться того же, используя nltk word_tokenize. Любая помощь приветствуется.

Ожидаемый результат:

[['pda'], ['vitamin-d', 'milk', 'ml', 'enough', 'carrying', 'active', 'automatic', 'body', 'blood_pressure'], ['body_temperature', 'try', 'improve', 'air_quality', 'level', 'automatic', 'intake', 'fresh_air'], ['blood_pressure', 'monitor'], ['buy', 'ice-cream'], ['proper', 'method', 'add', 'frozen', 'wild', 'blueberries', 'ice_cream']]

...