151-153 Андрић Милош

6.1. УРОЊАВАЊЕ

Одрастајући син библиотекара и енглеског мајора, одувек ме је фасцинирала

језицима.Хе програмским језицима . Па да, програмски језици, али и природни језици. Узмите

Енглески језик. Енглески је шизофрени језик који посуђује речи из немачког, француског, шпанског и латинског (да наведемо неколико). У ствари, "позајмљивање" је погрешна реч; "пљачкање" је више налик. Или можда

"асимиловање" - попут Борга. Да, свиђа ми се.

Ми смо Борг. Ваша језичка и етимолошка карактеристика ће бити додата нашој властитој.

Отпор је узалудан.

У овом поглављу сазнаћете више именица у множини. Такође, функције које враћају друге функције,

напредни регуларни изрази и генератори. Али прво, разговарајмо о томе како направити множинске именице. (Ако ниси прочитао поглавље о регуларним изразима, сада би био добар тренутак. Ово поглавље претпоставља да раѕумете основе регуларних израза и брзо се прелази у напредније намене.)

Ако сте одрасли у земљи где се говори енглески језик или сте учили енглески језик у формалном школском окружењу, вероватно сте упознати са основним правилима:

• Ако се реч заврши на S, X, или Z, додајте ES. Bass постаје basses, fax постаје faxes, а waltz постаје waltzes.

• Ако се реч заврши бучном H, додајте ES; ако се заврши тихим H, додајте само S. Шта је бучни H? Један који добија

у комбинацији са другим словима како би се створио звук који можете чути. Тако coach постаје coaches и rash постаје rashes, јер можете чути CH и SH када их изговорите. Али cheetah постаје cheetahs, јер H је тихо.

• Ако се реч заврши на Y која звучи као I, промените Y у IES; ако је Y комбинован са самогласником, звучи као нешто друго, додајте само S. Дакле, vacancy постаје vacancies, али day постаје days.

• Ако све остало не успе, додајте S и надајте се најбољем.

(Знам да има пуно изузетака. Man постаје men, а woman постаје women, али human постаје

humans. Mouse постаје mice и louse постаје lice, али house постаје houses. Knife постаје knives и

wife постаје wives, али lowlife постаје lowlifes. И немојт ни да почињем са речима које су своја множина (попут sheep, deer и haiku.)

Остали језици су, наравно, потпуно различити.

Дизајнирајмо Python библиотеку која аутоматски плурализује енглеске именице. Почећемо са ова четири правила, али имајте на уму да ћете неминовно морати да додате још.

⁂

6.2. ЗНАМ, КОРИСТИМО ПРАВИЛНЕ ИЗРАЗЕ!

Дакле гледате речи, што бар на енглеском значи да гледате низове знакова. Имате правила која кажу да требате пронаћи различите комбинације карактера, а затим им урадити различите ствари.

Ово звучи као посао за регуларне изразе!

import re

def plural(noun):

if re.search('[sxz]$', noun):   ①

return re.sub('$', 'es', noun) ②

elif re.search('[^aeioudgkprt]h$', noun):

return re.sub('$', 'es', noun)

elif re.search('[^aeiou]y$', noun):

return re.sub('y$', 'ies', noun)

else:

return noun + 's'

1.      Ово је редован израз, али користи синтаксу коју нисте видели у Регуланим изразима. Углсте заграде значе „одговара тачно једном од ових знакова.“ Дакле, [sxz] значи „s, или x, или z“, али само један од њих. $ треба да буде познат; одговара крају stringа. Комбиновано, овај регуларни израз тестира да ли се именица завршава са s, x или z.

2. Ова функција re.sub() изводи регуларне супституције низа заснованих на изразу. Погледајмо детаљније замене израза детаљније.

>>> import re

>>> re.search('[abc]', 'Mark') ①

>>> re.sub('[abc]', 'o', 'Mark') ②

'Mork'

>>> re.sub('[abc]', 'o', 'rock') ③

'rook'

>>> re.sub('[abc]', 'o', 'caps') ④

'oops'

1. Садржи ли string  Mark  a, b, или c? Да, садржи a.

2. У реду, пронађите a, b или c и замените га са o. Mark постаје Mork.

3. Иста функција претвара rock у rook.

Линк