Python, regex разделение и специальный символ

9Попробуй это.

<Grid container spacing={24}>
        <Grid item xs={3}>
          Column text
        </Grid>
        <Grid item xs={3} lg={9}>
          <Map/>
        </Grid>
11
задан alexroat 15 March 2009 в 11:24
поделиться

5 ответов

Ваш regex должен быть (\s) вместо (\W) как это:

l = re.compile("(\s)").split(s)

Код выше даст Вам точный вывод, который Вы запросили. Однако следующая строка имеет больше смысла:

l = re.compile("\s").split(s)

который разделяет на пробельных символах и не дает Вам все пробелы как соответствия. Вам, возможно, понадобятся они, хотя, таким образом, я отправил оба ответа.

16
ответ дан 3 December 2019 в 03:53
поделиться

Попытайтесь определить кодирование для регулярного выражения:

l=re.compile("\W", re.UNICODE).split(s)
4
ответ дан 3 December 2019 в 03:53
поделиться

Я думаю, что это - излишество для использования regexp в этом случае. Если единственная вещь, которую Вы хотите сделать, разделяется строка на пробельных символах, я рекомендую использовать split метод на строке

s = 'La felicità è tutto'
words = s.split()
3
ответ дан 3 December 2019 в 03:53
поделиться

Ну, после того, как некоторые дальнейшие тесты на Andrew Hare отвечают, что я видел, что символ как () [] - и так далее больше не рассматривают как разделитель, в то время как я хочу разделить предложение (поддерживающий весь разделитель) в словах, составленных с ансамблем алфавитно-цифрового набора значений, в конечном счете расширенного с символами с диакритическим знаком (то есть, все отмеченное как алфавитно-цифровое в unicode). Так, решение kgiannakakis более корректно, но это пропускает преобразование строки s в unicode формат.

Возьмите это расширение первого примера:

# -*- coding: utf-8 -*-
import re
s="(La felicità è tutto)"#no explicit unicode given string (UTF8)
l=re.compile("([\W])",re.UNICODE).split(unicode(s,'utf-8'))#split on s converted to unicode from utf8

print " string> "+s
print " wordlist> "+str(l)
for i in l:
    print " word> "+i

Вывод теперь:

 string> (La felicità è tutto)
 wordlist> [u'', u'(', u'La', u' ', u'felicit\xe0', u' ', u'\xe8', u' ', u'tutto', u')', u'']
 word> 
 word> (
 word> La
 word>  
 word> felicità
 word>  
 word> è
 word>  
 word> tutto
 word> )
 word> 

Это точно, что я ищу.

Аплодисменты :)

Alessandro

0
ответ дан 3 December 2019 в 03:53
поделиться

с использованием регулярного выражения Юникода будет работать, если вы дадите ему для начала строку Юникода (которой у вас нет в приведенном примере). Попробуйте следующее:

s=u"La felicità è tutto" # "The happiness is everything" in italian
l=re.compile("(\W)",re.UNICODE).split(s)

print " s> "+s
print " wordlist> "+str(l)
for i in l:
    print " word> "+i

Результаты:

 s> La felicità è tutto
 wordlist> [u'La', u' ', u'felicit\xe0', u' ', u'\xe8', u' ', u'tutto']
 word> La
 word>  
 word> felicità
 word>  
 word> è
 word>  
 word> tutto

Ваша строка s создана как тип str и, вероятно, будет иметь кодировку utf-8, которая отличается от Unicode.

3
ответ дан 3 December 2019 в 03:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: