2015-04-04 3 views
-2

Есть ли другой способ сделать это:Расщепление строка Python

>>> in_string = "Hello, world! how are you? Your oceans are pretty. Incomplete sentence" 

>>> def sep_words(string_1): 
"""Function which takes a string and returns a list of lists contining the words""" 

     list_1 = string_1.split() 
     list_output = [] 
     list_temp = [] 
    for i in list_1: 
     if ((i[-1] == '!') or (i[-1] == '?') or (i[-1] == '.')): 
      list_temp.append(i[:-1]) 
      list_temp.append(i[-1:]) 
      list_output.append(list_temp) 
      list_temp = [] 
     else: 
      list_temp.append(i) 
    if list_temp == []: 
     pass 
    else: 
     list_output.append(list_temp) 
    print (list_output) 


>>> sep_words(in_string) 

[['Hello,', 'world', '!'], ['how', 'are', 'you', '?'], ['Your', 'oceans', 'are', 'pretty', '.'], ['Incomplete', 'sentence']] 
+2

Итак, вы хотите разбить в пространстве '!', '?' И '.'? – thefourtheye

ответ

0

Вы можете использовать регулярное выражение:

import re 
message = "Hello, world! how are you? Your oceans are pretty. Incomplete sentence" 
print re.findall(r"[A-Za-z,]+|\S", message) 

Выход:

['Hello,', 'world', '!', 'how', 'are', 'you', '?', 'Your', 'oceans', 'are', 'pretty', '.', 'Incomplete', 'sentence'] 

Выражение ищет слова, содержащие одну или несколько букв (+) и, возможно, запятую ([A-Za-z,]) или ()) символ без пробелов (\S).

Смежные вопросы