Избавление от начальных и конечных символов при использовании re.split () [duplicate]

Вам нужно посмотреть пример Backgroundworker: http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx Особенно, как он взаимодействует с уровнем пользовательского интерфейса , Основываясь на вашей публикации, это, похоже, отвечает на ваши вопросы.

1
задан Arount 17 January 2019 в 04:11
поделиться

4 ответа

Я думаю, что вы действительно хотите это:

>>> re.findall('\d+', sntc)
['5678', '123', '345', '2345']

У вашего regex есть небольшая проблема, и может закончиться так:

>>> re.split('\D*', sntc)
['', '', '5', '6', '7', '8', '', '1', '2', '3', '', '3', '4', '5', '', '2', '3', '4', '5', '', '']

Я думаю, что вы намеревались сделать является:

>>> re.split('\D+', sntc)
['', '5678', '123', '345', '2345', '']

Тем не менее, это то, что split о, он расщепляет вещи, даже если он оставляет nothing.
Рассмотрим CSV или TAB разделенных xls файлов.
Это разработано так. - Даже если между запятыми или табуляцией нет ничего, эти столбцы все еще существуют - пустые столбцы.

И \D+ здесь, он работает как comma или TAB, он будет действовать как разделитель столбцов, независимо от того, есть ли у вас что-то перед ним или нет, он будет обозначать новый [ 1112] после него.
То же самое для последнего \D+ сопоставленного содержимого, независимо от того, следите за ним или нет, оно все равно обозначает новый column после него.

0
ответ дан Tiw 17 January 2019 в 04:11
поделиться

Поскольку split ищет регулярное выражение в соответствии с разделителями - и hey. соответствует регулярному выражению, но также отделяет 2345 от конца строки.

Итак, вы получаете '2345 hey.', разбитые на '2345' и '', с ' hey.' между ними.

Аналогично, если ваш разделитель был a и у вас была строка aba, вы получите результат ['', 'b', ''], потому что a отделяет начало и конец строки от b в середине.

0
ответ дан Amber 17 January 2019 в 04:11
поделиться

Чем ты, Амбер и Арунт.

Вот как я реализовал:

    whatup = sntce.replace(',', '')
#gets rid of thousands separators
testing = re.findall(r'[0-9,-.]+', whatup)
#gets rid of everything but the pos and neg numbers.

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

0
ответ дан wiseass 17 January 2019 в 04:11
поделиться

re.split() явно об этом:

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

>>> re.split(r'(\W+)', '...words, words...')`
['', '...', 'words', ', ', 'words', '...', ''`

Я думаю, вам лучше использовать re.findall(r'\D+', sntc) здесь.

0
ответ дан Arount 17 January 2019 в 04:11
поделиться
Другие вопросы по тегам:

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