Форум сайта python.su
0
Всем доброго времени суток!
Недавно начали проходить регулярные выражения, задали написать программу, которая распечатывала бы все формы глагола. Не могли бы вы подсказать, как короче\разумнее записать вот это(формы глагола “сидеть”):
p = re.search(u'^си(д|ж)(ел(а|о|и)|и(м|т(е|ь?ся)|ят|шь)(я(щ(ий|ая|е(му|го))|евш(ий|его|ему|им|ем|ие|их|им(и)$)
Отредактировано Kato (Фев. 5, 2013 21:35:20)
Офлайн
857
вообще, если прямо так и надо записывать, то есть многословная форма регулярного выражения, в которой можно комментарии писать
а вообще, нужно составить грамматику, а потом пользоваться ей как схемой
Онлайн
0
Не могли бы Вы, пожалуйста, еще просмотреть вот это? задача в том, чтобы программа искала данные слова и выдавала, чего в тексте больше- данного слова мужского рода либо во множественном числе.
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)
Офлайн
857
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)
Онлайн
2
используйте например стеммер Постера
Офлайн
0
спасибо!
если не сложно, не могли бы вы взглянуть на такое вот задание:
нужно открыть 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)
Офлайн