Форум сайта python.su
Всем доброго времени суток!
Недавно начали проходить регулярные выражения, задали написать программу, которая распечатывала бы все формы глагола. Не могли бы вы подсказать, как короче\разумнее записать вот это(формы глагола “сидеть”):
p = re.search(u'^си(д|ж)(ел(а|о|и)|и(м|т(е|ь?ся)|ят|шь)(я(щ(ий|ая|е(му|го))|евш(ий|его|ему|им|ем|ие|их|им(и)$)
Отредактировано Kato (Фев. 5, 2013 21:35:20)
Офлайн
вообще, если прямо так и надо записывать, то есть многословная форма регулярного выражения, в которой можно комментарии писать
а вообще, нужно составить грамматику, а потом пользоваться ей как схемой
Офлайн
Не могли бы Вы, пожалуйста, еще просмотреть вот это? задача в том, чтобы программа искала данные слова и выдавала, чего в тексте больше- данного слова мужского рода либо во множественном числе.
import codecs, re words = [] m = 0 pl = 0 f = codecs.open(u'text.txt','r','utf-8') for line in f: for word in line.split(): word = word.lower() word = word.strip(u'.,:;-()?!') words.append(word) f.close for i in range(len(words)): m = re.search(u'как(о(й|го|му|е))|(ая|ую)|и(е|х|[ми]*)',words[i]) if m != None: if m == m.group(2): m += 1 if m == m.group(3): pl += 1 if f > pl: print 'muzhskogo roda > ' else: print 'mnozhestvennogo chisla > '
Отредактировано Kato (Фев. 10, 2013 22:33:15)
Офлайн
Katoнеправильно, объект-совпадение сравнивается с объектом-строкойif m == m.group(2):
>>> import re >>> m = re.search(r'.(.)', 'abc') >>> m <_sre.SRE_Match object at 0xb77e6120> >>> m.group(1) 'b' >>> type(m) <type '_sre.SRE_Match'> >>> type(m.group(1)) <type 'str'> >>>
Katoобъект-файл сравнивается с объектом-числомif f > pl:
>>> f = open('/etc/passwd') >>> n = 0 >>> f <open file '/etc/passwd', mode 'r' at 0xb788ade0> >>> n 0 >>> type(f) <type 'file'> >>> type(n) <type 'int'> >>>
Отредактировано py.user.next (Фев. 11, 2013 03:05:19)
Офлайн
используйте например стеммер Постера
Офлайн
спасибо!
если не сложно, не могли бы вы взглянуть на такое вот задание:
нужно открыть html страницу из вики (посвященную какому-либо языку) и записать оттуда языковой код этого языка ( он там в таблице после ISO/DIS 639-2 указан). получилось что-то типа
import codecs, re f = codecs.open(u'nya.html', 'r', 'utf-8-sig') html = f.read() f.close() m = re.search(u'639-2</a>:</td><td style="background-color:white">(.{3})</td>', html) if m != None: codes = codecs.open('ya.txt','w','utf-8') codes.write(m.groups(1)) f.close() print m.group(1)
Отредактировано Kato (Фев. 19, 2013 23:56:12)
Офлайн