#python-3.x
#python-3.x
Вопрос:
Итак, я могу разработать код для извлечения числа с плавающей точкой из строки, но не могу извлечь число из строки.
Вот строка string = «Мне нравится float 33.0; Мне не нравится никакая другая цифра, кроме 3. n»
import re
re.findall('ddDd',s3)
Это дает мне ['33.0']
Но это не дает 3
Я хочу, чтобы это выдавалось ['33.0,'3']
(то есть один набор круглых скобок, разделенных запятой; НЕ два набора скобок для каждого) Я не хочу просто 33, 3 или 33.0 и 3.0 или любые их варианты. Так же, как я это изложил.
Комментарии:
1. Символ для чего-то, что может быть, а может и не быть, есть?
2. Именно то, что я сказал.
3. Это актуально, если вы хотите написать регулярное выражение, которое фиксирует оба числа. Я полагал, что это было целью.
Ответ №1:
Довольно ясно, что вы просите проекцию вплоть до 1-го элемента.
import re
def first(xs):
return xs[0]
def findall1(regex, s):
return list(map(first, re.findall(regex, s)))
string = "I like float 33.0; I don't like any other digit but for 3.n"
print(findall1(r'(d (.d )?)', string))
Результат:
['33.0', '3']
Комментарии:
1. это отлично работает, но есть ли какой-либо способ сделать это более эффективно без определения функций