Вам нужно посмотреть пример Backgroundworker: http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx Особенно, как он взаимодействует с уровнем пользовательского интерфейса , Основываясь на вашей публикации, это, похоже, отвечает на ваши вопросы.
Я думаю, что вы действительно хотите это:
>>> 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
после него.
Поскольку split ищет регулярное выражение в соответствии с разделителями - и hey.
соответствует регулярному выражению, но также отделяет 2345
от конца строки.
Итак, вы получаете '2345 hey.'
, разбитые на '2345'
и ''
, с ' hey.'
между ними.
Аналогично, если ваш разделитель был a
и у вас была строка aba
, вы получите результат ['', 'b', '']
, потому что a
отделяет начало и конец строки от b
в середине.
Чем ты, Амбер и Арунт.
Вот как я реализовал:
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.
И я думаю, мне не нужна запятая в ре. Затем я бросаю строки в числа и ухожу.
re.split()
явно об этом:
Если в разделителе есть группы захвата, и они совпадают в начале строки, результат будет начинаться с пустой строки. То же самое относится и к концу строки:
blockquote>>>> re.split(r'(\W+)', '...words, words...')` ['', '...', 'words', ', ', 'words', '...', ''`
Я думаю, вам лучше использовать
re.findall(r'\D+', sntc)
здесь.