Уведомления

Группа в Telegram: @pythonsu

#1 Июль 19, 2015 20:31:55

BenBen
Зарегистрирован: 2015-07-15
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Извлечение всех подстрок

Здравствуйте!
Пусть, например, дана строка:
str=“Python, fjkjfkjgjkf. Java, hjflkfjlkjg. Python - fjjlkjfks, fjjgkfjk.”
Как извлечь все подстроки, которые начинаются с “Python” и заканчиваются “.” ??
Т.е. в итоге должен быть получен список: “Python, fjkjfkjgjkf.”, “Python - fjjlkjfks, fjjgkfjk.”

Отредактировано BenBen (Июль 19, 2015 20:33:39)

Офлайн

#2 Июль 19, 2015 20:35:51

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Извлечение всех подстрок

Код в теги.

BenBen
Как извлечь все подстроки, которые начинаются с “Python” и заканчиваются “.” ??
С помощью регулярных выражений.



Офлайн

#3 Июль 19, 2015 21:27:08

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Извлечение всех подстрок

>>> import re
>>> s = "Python, fjkjfkjgjkf. Java, hjflkfjlkjg. Python - fjjlkjfks, fjjgkfjk."
>>> print re.findall(r'Python.*?\.', s)
['Python, fjkjfkjgjkf.', 'Python - fjjlkjfks, fjjgkfjk.']
незя называть переменную str!



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Июль 19, 2015 21:27:32)

Офлайн

#4 Июль 19, 2015 23:17:43

BenBen
Зарегистрирован: 2015-07-15
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Извлечение всех подстрок

s='Theorem 5.8. Let qk(z) be the polynomial de\xef\xac\x81ned by\n\nqn+1(z) = 2\n\ndqn\ndz\n\n\xe2\x88\x92 1\n2\n\nn\xe2\x88\x921(cid:88)\n\nk=0\n\nwith q0(z) = z and q1(z) = 2, and \xcf\x83n(z) be the n \xc3\x97 n Hankel determinant\nqn\xe2\x88\x921(z)\nqn(z)\n\n\xcf\x83n(z) =\n\nqk(z)qn\xe2\x88\x92k\xe2\x88\x921(z),\n\nn \xe2\x89\xa5 1,\n\n(cid:12)(cid:12)(cid:12)(cid:12)(cid:12)(cid:12)(cid:12)(cid:12)(cid:12) ,\n\nn \xe2\x89\xa5 0.\n\n…\n\nq2n\xe2\x88\x922(z)\n\n=\n\n\xcf\x83(cid:48)\nn\xe2\x88\x921(z)\n\xcf\x83n\xe2\x88\x921(z)\n\n\xe2\x88\x92 \xcf\x83(cid:48)\nn(z)\n\xcf\x83n(z) ,\n\nn \xe2\x89\xa5 1,\n\n(cid:12)(cid:12)(cid:12)(cid:12)(cid:12)(cid:12)(cid:12)(cid:12)(cid:12)\n\nq0(z)\nq1(z)\n…\n\nq1(z)\nq2(z)\n…\n\nqn(z)\n\n\xc2\xb7\xc2\xb7\xc2\xb7\n\xc2\xb7\xc2\xb7\xc2\xb7\n…\n\xc2\xb7\xc2\xb7\xc2\xb7\n\nqn\xe2\x88\x921(z)\n\n(cid:20) \xcf\x83n\xe2\x88\x921(z)\n\n(cid:21)(cid:27)\n\n(cid:26)\n\nln\n\n\xcf\x83n(z)\n\nThen\n\nsatis\xef\xac\x81es PII with \xce\xb1 = n.\n\nw(z; n) =\n\nd\ndz\n\nProof'

reg=re.findall(r'Theorem .*?Proof', s)

По идее должно всю строку s вывести, но получается пустой список. В чём здесь дело?

Отредактировано BenBen (Июль 19, 2015 23:22:13)

Офлайн

#5 Июль 20, 2015 01:27:57

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Извлечение всех подстрок

BenBen
потому что у вас там втсречаются символы новой строки. Так:

re.findall(r'Theorem .*?Proof', s, re.S)



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#6 Июль 20, 2015 03:28:09

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Извлечение всех подстрок

BenBen
В чём здесь дело?

Ты даже код в теги не можешь обернуть, рано тебе ещё с Python работать.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version