Найти внутри строки в Python - PullRequest
2 голосов
/ 23 марта 2011

Есть строка, она содержит цифры и символы.
Мне нужно найти целые числа (в этой строке), которые содержат число 467033. Например, 1.467033777777777

Спасибо

Ответы [ 3 ]

2 голосов
/ 23 марта 2011

Попробуйте это:

import re

RE_NUM = re.compile('(\d*\.\d+)', re.M)

text = 'eghwodugo83o135.13508yegn1.4670337777777773u87208t'
for num in RE_NUM.findall(text):
    if '467033' in num:
        print num

Печать:

1.4670337777777773

Обобщено / оптимизировано в ответ на комментарий:

def find(text, numbers):
    pattern = '|'.join('[\d.]*%s[\d.]*' % n for n in numbers)
    re_num = re.compile(pattern, re.M)
    return [m.group() for m in re_num.finditer(text)]

print find(text, ['467033', '13'])

Печать:

['135.13508', '1.4670337777777773']
1 голос
/ 23 марта 2011
import re
a = 'e.g. 1.467033777777777\nand also 576575567467033546.90 Thanks '
r = re.compile('[0-9.]*467033[0-9.]*')
r.findall(a)
['1.467033777777777', '576575567467033546.90']
1 голос
/ 23 марта 2011

Если вы просто ищете подстроку в другой подстроке, вы можете использовать in:

>>> sub_num = "467033"
>>> my_num = "1.467033777777777"
>>> sub_num in my_num
True

Однако я подозреваю, что в вашей проблеме есть нечто большее, чем просто поиск строк и выполнение этого.этот путь не может быть оптимальным.Можете ли вы быть более конкретным о том, что вы пытаетесь сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...