s = r'abc123d, hello 3.1415926, this is my book'
print re.findall(r'-?[0-9]+(?:\.[0-9]*)?|-?\.[0-9]+',s)
Вам не нужно escape
дважды, когда вы используете raw mode
.
Выход: ['123', '3.1415926']
Также тип возврата будет списком strings
.Если вы хотите, чтобы возвращаемый тип, как integers
и floats
, использовал map
import re,ast
s = r'abc123d, hello 3.1415926, this is my book'
print map(ast.literal_eval,re.findall(r'-?[0-9]+(?:\.[0-9]*)?|-?\.[0-9]+',s))
Выход: [123, 3.1415926]
Возможно, ваша проблема была связана с сетевым подключением низкого уровня с провайдером, как вы предположили в своем ответном комментарии. Я испытываю похожую проблему с IIS и некоторыми загадочными 200 0 64 строками, которые появляются в файле журнала, и именно так я нашел этот пост. Для справки, это мое понимание sc-win32-status = 64; Я надеюсь, что кто-то может исправить меня, если я ошибаюсь.
Потратил три дня на это. Это был тайм-аут, который был установлен на 4 секунды (запрос curl php). Решением было увеличить настройку тайм-аута:
//curl_setopt($ch, CURLOPT_TIMEOUT, 4); // times out after 4s
curl_setopt($ch, CURLOPT_TIMEOUT, 60); // times out after 60s
Необходимо будет использовать wireshare или монитор сети для сбора большего количества данных по этой проблеме. Меня думают.
Я предлагаю вам поместить Fiddler между вашим сервером и клиентом загрузки. Это должно выявить различия между Firefox и другими пользователями.
Проверьте заголовки с сервера, особенно тип контента и длину контента, возможно, что ваши клиенты не распознают формат двоичного файла и зависают при ожидании байтов, которые никогда не приходят, или, возможно, они закрывают базовое TCP-соединение, которое может привести к тому, что IIS зарегистрирует состояние win32 64.