как использовать два или более разделителей с split () в python - PullRequest
0 голосов
/ 14 января 2020

У меня есть тексты, в которых разделителем может быть что угодно в списке [;,.?]

txt1 = "Kids of today have started selling drugs or taken drugs at this age, then we are finished as parent,what generation are we going to have when our generation is no more,am sick to my stomach, it means we do not have tomorrow leaders or future leader, drugs at this stage woowowow parent and Guidance's fasten your belt if not we will wake up someday to see what we never thought could happen"
txt2 = "There was a clear warning sign, and this person chose to take a risk regardless. It was quite a stupid decision to climb the fence, but even this is probably a common activity that generally never results in death. More of a freak accident than a definite way for someone to die. At the very most, the only changes that should be made by the airport / authorities would be to the fence design, making it more difficult for people to climb up. Barricading the area off completely and banning people from the area would be comparable to fencing off a scenic mountain path that hundreds of people like to climb and enjoy safely, but which does produce the occasional fatality when people slip. Just because this area carries a (clearly communicated) risk shouldn't be a reason for the authorities to step in and make adjustments. People take risks and are responsible for their own safety in areas like this. One fatality is a tiny drop in the bucket compared to the hundreds of people doing this each month without incident."

Как разбить многострочные предложения на независимые предложения в зависимости от наличия разделителя. Например, в txt1 разделитель должен быть ',' (запятая), тогда как в txt2 разделитель должен быть '.' (Точка).

Я использовал для этого re.split (), но я не получить желаемых результатов. Я использовал:

 print(re.split(';|,|.|?',txt1))

Ответы [ 4 ]

3 голосов
/ 14 января 2020

Вы должны добавить escape-символ \ перед . и ?

print(re.split(';|,|\.|\?',txt1))

, чтобы избежать пустых символов / пустых полос, сделать список понимание

[x for x in re.split(';|,|\.|\?',txt1) if x]
1 голос
/ 14 января 2020

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

print(re.split('[;,.?]', txt1))
0 голосов
/ 14 января 2020

Вы можете напрямую передать список разделителей, если он у вас есть.

Создать строку из списка, которая у вас есть, в виде '[ваши разделители]'

del_list = '[your delimiters]'
print(re.split('{0}'.format(del_list), txt1))
0 голосов
/ 14 января 2020

попробуйте это:

import re
DATA = "sample, text"
print(re.split(r'[;,.?]+', DATA))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...