2016-11-11 3 views
1

Я знаю, что этот вопрос задан несколько раз, но то, что я прошу, - это не то, как это сделать, но какой разделитель следует использовать.Разделители в разделительной строке в python

Итак, у меня очень длинная строка, и я хочу разбить ее на слова. Результат не то, что я хотел, поэтому я решил добавить еще один разделитель.

Проблема есть такие слова как vs. и U.S. в строке. Если я использую . в качестве разделителя, я получу vs, но U.S. будет U и S. Это не то, что я хотел.

Другой пример, есть слова brainf*ck*7F***ingx*x+y*yworks*f*k в строке. Если я использую * в качестве разделителя, то результат будет очень грязным (brainf*ck становится brainf и ck, F***ing становится F и ing, и так далее)

' разделителя имеет те же проблемы; (don't'startingout'what'sdo'sdont's)

-=+() также есть некоторые незначительные проблемы, но я могу справиться с этими разделителями. Проблема с .*'.

Есть ли у кого-нибудь идеи, как решить эту проблему?

+1

ИМХО это очень сложная проблема. Вероятно, вам нужно классифицировать типы возможных возможностей и посмотреть, можно ли извлечь шаблон. если вы можете классифицировать, тогда у вас есть конкретная проблема, так как это проблема x-y. – Nishant

+1

Возможно, вам лучше использовать регулярные выражения для этого. (re module) –

+0

Почему бы не «пробелы» использоваться для разделения слов? –

ответ

0

Что об использовании Re:

import re 
text = 'U.S. vs. brainf*ck *7 F***ing x*x+y*y works* f*k' 
get = re.split('\s', text) 

# ['U.S.', 'vs.', 'brainf*ck', '*7', 'F***ing', 'x*x+y*y', 'works*', 'f*k'] 

#Example 
print(get[0]) # U.S. 
print(get[1]) # vs. 
Смежные вопросы