Лучший способ контролировать детализацию разделения строки по слову/символу или символу

#python #string #split #nlp #token

Вопрос:

У меня есть общие операции, которые либо позволяют пользователю использовать «слово» или «символ» в качестве единицы измерения, и я делал это как таковое:

 def split(s, unit):
    return s.split() if unit == 'word' else list(s)
 

Использование:

 >>> foo = "this is a foo bar sentence"
>>> split(foo, 'word')
['this', 'is', 'a', 'foo', 'bar', 'sentence']
>>> split(foo, 'char')
['t', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', ' ', 'f', 'o', 'o', ' ', 'b', 'a', 'r', ' ', 's', 'e', 'n', 't', 'e', 'n', 'c', 'e']
 

Есть ли простой/лучший способ создать функцию, которая разбивает входные строки в соответствии со словами (определяемыми str.split ) и символами?

Ответ №1:

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

 def split(s):
    l = s.split()
    return l if len(l) > 1 else list(s)
 

Дайте мне знать, если у вас есть что-то еще на уме.