Извлечь слово из строки

Вы можете использовать функцию отсортированную из Nspl :

use function \nspl\a\sorted;
use function \nspl\op\propertyGetter;
use function \nspl\op\methodCaller;

// Sort by property value
$sortedByCount = sorted($objects, propertyGetter('count'));

// Or sort by result of method call
$sortedByName = sorted($objects, methodCaller('getName'));

-1
задан hygull 16 January 2019 в 15:06
поделиться

2 ответа

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

import re

s='valoirfinalieMONT:23maning '
print(re.findall('(mont)\D*(\d*)', s, re.IGNORECASE))

регулярное выражение будет захватывать 'mont' любое количество нецифровых (\ D) символов, а затем любое количество цифр (\ d)

игнорирование добавлен регистр, поэтому mont, MONT и MoNt, и такие тоже будут записаны

0
ответ дан Nullman 16 January 2019 в 15:06
поделиться

Вы также можете попробовать вот так.

re.I для нечувствительного к регистру соответствия. Вы можете проверить https://docs.python.org/3/library/re.html для получения более подробной информации.

import re

s = "valoirfinalieMONT:23maning"
s2 = "montdj34meaing"
s3 = "thisisthelastmontitwillwork98help"

m = re.match(r".*(?P<name>mont)\D+(?P<number>\d+).*", s, re.I)
print(m.group(1)) # MONT
print(m.group(2)) # 23

# Same as above (2nd way)
print(m.group('name'));
print(m.group('number'))

m2 = re.match(r".*(?P<name>mont)\D+(?P<number>\d+).*", s2, re.I)
print(m2.group(1)) # mont
print(m2.group(2)) # 34

m3 = re.match(r".*(?P<name>mont)\D+(?P<number>\d+).*", s3, re.I)
print(m3.group(1)) # mont
print(m3.group(2)) # 98

Вот решение вашего вопроса, которое вы упомянули в комментарии.

>>> import re
>>>
>>> s = 'valoir13-10-2012finalie13/10/2012MONT:23,00maning';
>>> m = re.match(r".*(\d{2}-\d{2}-\d{4}).*(\d{2}/\d{2}/\d{4}).*(MONT).*(\d{2},\
d{2})", s, re.I)
>>> m
<_sre.SRE_Match object; span=(0, 43), match='valoir13-10-2012finalie13/10/2012M
ONT:23,00'>
>>>
>>> m.group(0)
'valoir13-10-2012finalie13/10/2012MONT:23,00'
>>>
>>> d = m.group(1)
>>> d
'13-10-2012'
>>> arr = d.split("-")
>>> arr
['13', '10', '2012']
>>>
>>> '-'.join(arr[:2] + [arr[2][-2:]])
'13-10-12'
>>>
>>> ans1 = '-'.join(arr[:2] + [arr[2][-2:]])
>>> ans1
'13-10-12'
>>>
>>> ans2 = m.group(2)
>>> ans2
'13/10/2012'
>>>
>>> ans3 = m.group(3)
>>> ans3
'MONT'
>>>
>>> ans4 = m.group(4)
>>> ans4
'23,00'
>>>
>>> output = ' '.join([ans1, ans2, ans3, ans4])
>>> output
'13-10-12 13/10/2012 MONT 23,00'
>>>
0
ответ дан hygull 16 January 2019 в 15:06
поделиться
Другие вопросы по тегам:

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