Разделить текст пробелом, которому предшествует не-буквенный символ - PullRequest
0 голосов
/ 02 апреля 2020

, так как я не мог найти никакого решения в inte rnet, я просто подумал задать свой вопрос здесь.

Я хочу разбить данный текст при каждой пунктуации. Так что не только после каждого предложения, но и после запятой, например. До сих пор я сталкивался с инструментарием естественного языка (tltk) и регулярными выражениями, но у меня ничего не получалось.

Это то, что работает довольно хорошо, но не полностью оправдывает мои ожидания:

sample_text = """With this example I wanna make the point clear... I hope you get it! There are many coding
languages out there, but which is the best? I would say there's no best. Change my mind - if you can!"""

split_text = nltk.tokenize.sent_tokenize(sample_text)
print(split_text)

#Output: ['With this example I wanna make the point clear...', 'I hope you get it!', 'There are many coding languages out there, but which is the best?', "I would say there's no best.", 'Change my mind - if you can!']

Это уже вполне нормально, но я бы хотел получить вывод, который даже разделяет текст через запятую или дефис. Таким образом, результат будет выглядеть следующим образом:

[
 'With this example I wanna make the point clear...',
 'I hope you get it!',
 'There are many coding languages out there,',
 'but which is the best?',
 "I would say there's no best.",
 'Change my mind -',
 'if you can!'
]

Возможно, лучше использовать регулярные выражения, не так ли? Но почему-то у меня это не получается. Заранее спасибо, ценю любую помощь!

Ответы [ 2 ]

2 голосов
/ 02 апреля 2020

Regex работает хорошо, попробуйте использовать это выражение в .split ()

[!"\#$%&'()*+,\-.\/:;<=>?@\[\\\]^_‘{|}~]

1 голос
/ 02 апреля 2020

Вы можете разбить строку на пробел, которому не предшествует буква:

split_text = re.split('(?<=[^a-z]) ', sample_text, 0, re.I)
print(split_text)

Вывод:

[
 'With this example I wanna make the point clear...',
 'I hope you get it!',
 'There are many coding languages out there,',
 'but which is the best?',
 "I would say there's no best.",
 'Change my mind -',
 'if you can!'
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...