понедельник, 16 марта 2009
шакал и шагает, и скачет!!!import re
def mark(line, word, n):
'''
>>> mark("aa bbb ccc dd", 'bbb', 0)
'aa {bbb} ccc dd'
>>> mark("aa aa aa", "aa", 1)
'aa {aa} aa'
>>> mark("aa bbb aa aa", "aa", 1)
'aa bbb {aa} aa'
'''
res = ""
for i, w in list (enumerate (re.split('(\W+)', line))):
if w != word:
n += 1
else:
if i == n:
w = '{' + word + '}'
res += w
return res
def nevozm(text):
'''
>>> nevozm(["Shakal shagal", "Shakal skakal", "Shakal ustal, no Shakal ne upal"])
{"Shakal": ["Shakal shagal", "Shakal skakal","Shakal ustal, no shakal ne upal", "Shakal ustal, no shakal ne upal"], shagal: ["Shakal shagal"], skakal: ["Shakal skakal"], ustal: ["Shakal ustal, no Shakal ne upal"], no: ["Shakal ustal, no Shakal ne upal"], ne: ["Shakal ustal, no Shakal ne upal"], upal: ["Shakal ustal, no Shakal ne upal"]
>>> nevozm(["a,b"])['a']
['{a},b']
'''
dict = {}
for line in text:
list = re.split('\W+', line)
for word in list:
if word not in dict:
n = 0
f = n
dict[word] = [mark(line, word, f)]
else:
f = n
probline = mark(line, word, f)
if probline not in dict[word]:
dict[word].append(probline)
else:
n += 1
f = n
dict[word].append(mark(line, word, f))
return dict
if __name__ == '__main__':
import doctest
doctest.testmod()
@темы:
ботанизм,
будни,
гордое до невозможности,
задушенный шакал,
восторгательное