2016-12-27 2 views
-5

Ребята, я знаю, что я уже просил очень похожи, но я схожу с ума .....Отдельная строка в Python

У меня есть строка:

string = '☕ Drink the ❶ best ☕coffee☕' 

И я надеюсь, это:

string = ['☕', 'Drink', 'the', '❶', 'best', '☕', 'coffee', '☕'] 
+0

Вы пытались соответствовать алфавиты и другие 'не- символы пробела? – Tushar

+1

Вы что-то пробовали, кроме как ожидать? – DeepSpace

+0

SO - это не бесплатный сервис кодирования! – Fallenhero

ответ

1

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

import re 

s = [el for el in re.split('([\W+])', '☕ Drink the ❶ best ☕coffee☕') if el.strip()] 
print(s) 

выход:

['☕', 'Drink', 'the', '❶', 'best', '☕', 'coffee', '☕'] 
+0

Дорогой бог thx за то, что послал меня никогда ... – dapo

+0

@dapo приветствую :) – neverwalkaloner

0

Вы можете использовать ord найти порядковый номер символа. Если он выше 126, он находится где-то выше ASCII, на территории Юникода.

import itertools 
s = '☕ Drink the ❶ best ☕coffee☕' 

for k,v in itertools.groupby(s, lambda c: ord(c)<127): 
    for word in ''.join(v).split(): 
     print(word) 

Результат:

☕ 
Drink 
the 
❶ 
best 
☕ 
coffee 
☕ 

Примечание: Я написал это в файл, так как терминалы часто имеют плохую обработку Unicode:

>>> with open(r'theoutput.txt', 'w', encoding='utf-8-sig') as output: 
...  for k,v in itertools.groupby(s, lambda c: ord(c)<127): 
...    for word in ''.join(v).split(): 
...      print(word, file=output) 
... 
>>>