#python #regex #split #whitespace
#python #регулярное выражение #разбиение #пробел
Вопрос:
Мне нужно разбить строку на массив по границам слов (пробел), сохраняя при этом пробелы.
Например:
'this is ansentence'
Стало бы
['this', ' ', 'is', ' ', 'a' 'n', 'sentence']
Я знаю о str.partition и re.split, но ни один из них не совсем делает то, что я хочу, и нет re.partition
.
Как я должен разбивать строки на пробелы в Python с разумной эффективностью?
Ответ №1:
Попробуйте это:
s = "this is ansentence"
re.split(r'(W )', s) # Notice parentheses and a plus sign.
Результатом будет:
['this', ' ', 'is', ' ', 'a', 'n', 'sentence']
Комментарии:
1. Спасибо. Мне следовало более внимательно прочитать
re.split
документы.
Ответ №2:
Символом пробела в re является ‘s’, а не ‘W’
Сравнить:
import re
s = "With a sign # written @ the beginning , that's ansentence,"
'nno more an instruction!,tyou know ?? "Cases" amp; and surprises:'
"that will 'lways unknown **before**, in 81% of time$"
a = re.split('(W )', s)
print a
print len(a)
print
b = re.split('(s )', s)
print b
print len(b)
производит
['With', ' ', 'a', ' ', 'sign', ' # ', 'written', ' @ ', 'the', ' ', 'beginning', ' , ', 'that', "'", 's', ' ', 'a', 'n', 'sentence', ',n', 'no', ' ', 'more', ' ', 'an', ' ', 'instruction', '!,t', 'you', ' ', 'know', ' ?? "', 'Cases', '" amp; ', 'and', ' ', 'surprises', ':', 'that', ' ', 'will', " '", 'lways', ' ', 'unknown', ' **', 'before', '**, ', 'in', ' ', '81', '% ', 'of', ' ', 'time', '$', '']
57
['With', ' ', 'a', ' ', 'sign', ' ', '#', ' ', 'written', ' ', '@', ' ', 'the', ' ', 'beginning', ' ', ',', ' ', "that's", ' ', 'a', 'n', 'sentence,', 'n', 'no', ' ', 'more', ' ', 'an', ' ', 'instruction!,', 't', 'you', ' ', 'know', ' ', '??', ' ', '"Cases"', ' ', 'amp;', ' ', 'and', ' ', 'surprises:that', ' ', 'will', ' ', "'lways", ' ', 'unknown', ' ', '**before**,', ' ', 'in', ' ', '81%', ' ', 'of', ' ', 'time$']
61
Ответ №3:
Попробуйте это:
re.split('(W )','this is ansentence')