How to use makeRE method in avocado

Best Python code snippet using avocado_python

generate_sukija.py

Source:generate_sukija.py Github

copy

Full Screen

1# -*- coding: utf-8 -*-2# Copyright 2013-2018, 2020 Hannu Väisänen3# This program is free software; you can redistribute it and/or modify4# it under the terms of the GNU General Public License as published by5# the Free Software Foundation; either version 2 of the License, or6# (at your option) any later version.7#8# This program is distributed in the hope that it will be useful,9# but WITHOUT ANY WARRANTY; without even the implied warranty of10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the11# GNU General Public License for more details.12#13# You should have received a copy of the GNU General Public License14# along with this program; if not, write to the Free Software15# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA16# Program to generate old spellings and common spelling mistakes for Voikko lexicon.17# This automatic generation will generate some old18# spellings and spelling errors that do not exist in real life.19# Style- ja usage-lippujen arvot suoraan Joukahaisesta:20# grep -A1 '<style>' ../vocabulary/joukahainen.xml|grep flag|sort -u|gawk '{printf "%s,", substr($1,7,length($1)-13)}'21# grep -A1 '<usage>' ../vocabulary/joukahainen.xml|grep flag|sort -u|gawk '{printf "%s,", substr($1,7,length($1)-13)}'22import codecs23import getopt24import re25import sys26from types import *27sys.path.append("common")28import generate_lex_common29# Tulosta sanojen historiallinen taivutus.30# Mallia on otettu funktiosta handle_word(word) tiedostossa generate_lex.py.31#32import voikkoutils33import xml.dom.minidom34def print_historical_inflection (word):35 sukija_infclass = None36 for infclass in word.getElementsByTagName ("infclass"):37 if infclass.getAttribute("type") == "historical":38 sukija_infclass = generate_lex_common.tValue (infclass)39 break40 if sukija_infclass is not None:41 altforms = generate_lex_common.tValues (word.getElementsByTagName("forms")[0], "form")42 for altform in altforms:43 print ("SANA", altform, sukija_infclass)44#voikkoutils.process_wordlist (generate_lex_common.VOCABULARY_DATA + '/joukahainen.xml', \45# print_historical_inflection, False)46#sys.exit(1)47OPTIONS = generate_lex_common.get_options()48infile = codecs.open (OPTIONS["destdir"] + u"/all.lexc", "r", "UTF-8")49outfile = codecs.open (OPTIONS["destdir"] + u"/all-sukija.lexc", 'w', 'UTF-8')50sukijafile = codecs.open (OPTIONS["destdir"] + u"/poikkeavat-sukija.lexc", 'r', 'UTF-8')51C = "[qwrtpsšdfghjklzžxcvbnm]" # Kerakkeet.52M = "[bcdfghklmnpqrsštvwxzži]" # Kerakkeet - j + i.53J = "[bcdfghklmnpqrsštvwxzž]" # Kerakkeet - j.54K = "[qwrtpsšdfghjklzžxcvbnmaiou]" # Kerakkeet + ääntiöitä.55V = "[aeiouüyåäö]" # Ääntiöt.56A = "[aä]"57E = "[ei]"58O = "[oö]"59U = "[uy]"60def makeRePattern (wordClass, word):61 u = "^\\[%s\\](\\[I..\\])?\\[Xp\\].*%s\\[X\\]" % (wordClass, word)62# outfile.write ("!===== " + u + " " + word + "\n")63 u = u.replace ('C', C)64 u = u.replace ('J', J)65 u = u.replace ('K', K)66 u = u.replace ('M', M)67 u = u.replace ('V', V)68 u = u.replace ('A', A)69 u = u.replace ('E', E)70 u = u.replace ('O', O)71 u = u.replace ('U', U)72# outfile.write ("!===== " + u + "\n\n")73 return u74def makeRe (wordClass, word):75 return re.compile (makeRePattern (wordClass, word), re.UNICODE)76def replace (s, old, new):77 u = s.replace (old + u":", new + u":")78 u = u.replace (old + u" ", new + u" ")79 u = u.replace (old + u"\t", new + u"\t")80 u = u.replace (old + u"@", new + u"@")81 return u82def replace_and_write (line, string1, string2):83 s = replace (line, string1, string2)84 outfile.write (s)85# Spor(a)adi, spor(a)adinen, jne.86#87re_aCi = makeRe ("(Ln|Ln|Lnl|Le.)", "(.{2,}C)(a)([df])(i)")88re_aCia = makeRe ("(Ln|Ln|Lnl|Le.)", "(.{2,}C)(a)([df]i)(a)")89re_aCinen = makeRe ("(Ll|Ln|Lnl|Le.)", "(.{3,})(a)([df]i)(nen)")90# -omi, -oni, -ori jne -loppuiset sanat; myös -omia, -ominen, jne.91re_oMi = makeRe ("(Ll|Ln|Lnl|Le.)", "(.{1,}M)(o)([dfglmnr])(i)")92re_oMia = makeRe ("(Ll|Ln|Lnl|Le.)", "(.{1,}M)(o)([dfglmnr])(ia)")93re_oMinen = makeRe ("(Ll|Ln|Lnl|Le.)", "(.{1,}M)(o)([dfglmnr]i)(nen)")94re_aali = makeRe ("(Ll|Ln|Lnl)", "(.{2,})(aa)(l)(i)")95re_aalinen = makeRe ("(Ll|Ln|Lnl)", "(.{2,})(aa)(li)(nen)")96re_iivi = makeRe ("(Ll|Ln|Lnl)", "(.{2,})(ii)(v)(i)")97re_iivinen = makeRe ("(Ll|Ln|Lnl)", "(.{2,})(ii)(vi)(nen)")98re_uuri = makeRe ("(Ll|Ln|Lnl)", "(.{1,}J)(uu)(r)(i)") # Ei muuteta juuri-loppuisia yhdyssanoja.99re_yyri = makeRe ("(Ll|Ln|Lnl)", "(.{1,}C)(yy)(r)(i)")100re_ööri = makeRe ("(Ll|Ln|Lnl)", "(.{1,}C)(öö)(r)(i)")101re_torio = makeRe ("(Ll|Ln|Lnl)", "(.{1,}t)(o)(rio)")102def find (line, list):103 for u in list:104# outfile.write ("!!!! " + u + " " + list)105 if line.find(u) >= 0:106 return True107 return False108STOP = re.compile ("( |\t|@)")109def end (line):110 n = line.find(":")111 r = STOP.search(line[n+1:])112 return (n, n+r.start(1)+2)113def ga (line, x):114 if not find (line, x[0]):115 e = end (line)116 p = line[e[0]:e[1]]117 q = p[:-x[1]-1] + x[2] + p[-x[3]-1:]118# if line.find("bromi") > 0:119# outfile.write ("!!HUUHAA [" + p + "] [" + q + "]\n")120 outfile.write (line.replace (p, q))121re_oittaa1 = makeRe (u"Lt", u".Koittaa")122re_oittaa2 = makeRe (u"Lt", u".Köittää")123re_ottaa1 = makeRe (u"Lt", u".Kottaa")124re_ottaa2 = makeRe (u"Lt", u".Köttää")125re_oitella1 = makeRe (u"Lt", u".Koitella")126re_oitella2 = makeRe (u"Lt", u".Köitellä")127re_otella1 = makeRe (u"Lt", u".Kotella")128re_otella2 = makeRe (u"Lt", u".Kötellä")129re_ottua1 = makeRe (u"Lt", u".Kottua")130re_ottua2 = makeRe (u"Lt", u".Köttyä")131re_oittua1 = makeRe (u"Lt", u".Koittua")132re_oittua2 = makeRe (u"Lt", u".Köittyä")133re_isoida = makeRe (u"Lt", u"isoida") # Organisoida => organiseerata.134re_nuolaista = re.compile (u"\\[Lt\\].* Nuolaista_", re.UNICODE)135re_rangaista = re.compile (u"\\[Lt\\].* Rangaista_", re.UNICODE)136re_Xiljoona = re.compile (u"\\A(?:\\[Bc\\]|\\[Sn\\]|@).*(b|m|tr)iljoon", re.UNICODE)137re_isoida_x = re.compile (u"\\A\[Lt\]\[Xp\](dramatisoida|karakterisoida)\[X\]")138re_A = re.compile (u"[aou]")139re_oitin = makeRe (u"Ln", u".Coitin")140re_oite = makeRe (u"Ln", u".Coite")141re_aatio = makeRe (u"Ln", u"..aatio")142re_uutio = makeRe (u"Ln", u".Cuutio")143re_tio = makeRe (u"Ln", u"([^a]i|k|p)tio") # Traditio, funktio, mutta ei aitio.144re_uusio = makeRe (u"Ln", u"Cuusio") # Myös fuusio.145re_mmainen = re.compile (".*mmainen\\[X\\]")146re_mmäinen = re.compile (".*mmäinen\\[X\\]")147def g2 (line, x):148 outfile.write (line.replace (x[0], x[1]))149def g4 (line, x):150 s = line.replace (x[0], x[1])151 outfile.write (s.replace (x[2], x[3]))152def g6 (line, x):153 if line.find(x[4]) > 0:154 s = line.replace (x[4], x[5])155 s = s.replace (x[0], x[1])156 s = s.replace (x[2], x[3])157 outfile.write (s)158def replace4 (s, old, new, u):159 return s.replace (old + u, new + u)160def replace5 (s, old, new, u, v):161 p = replace4 (s, old, new, u)162 return replace4 (p, old, new, v)163def gn (line, x):164 if not line.startswith("[Ln][Xp]kuusio[X]"):165 for u in x[1]:166 s = replace5 (line, x[0], u, " ", "\t")167 outfile.write (s)168 s = line.replace (x[0] + "[X]", x[2][0] + "i[X]")169 s = s.replace (x[3][0], x[3][1])170 s = replace (s, x[0], x[2][0])171 outfile.write (s)172 s = replace5 (s, x[2][0], x[2][1], " ", "\t")173 outfile.write (s)174 s = line.replace (x[3][0], x[3][1])175 replace_and_write (s, x[0], x[2][0])176 replace_and_write (s, x[0], x[2][1])177def g10 (line, x):178 if not x[8].match(line):179 s = line.replace(x[0],x[1]).replace(x[4],x[5]).replace(x[6],x[7])180 replace_and_write (s, x[2], x[3])181list_oMi = ["blogi", "kromi", "aasiori", "hevosori", "jalostusori", "siitosori"]182list_oMia = ["victoria", "viktoria"]183list_oMinen = ["hiusten=halkominen"]184list_aali = ["kraali", "shaali"]185list_all = [186 (re_nuolaista, g2, ("Nuolaista_", "SukijaNuolaista_")),187 (re_rangaista, g2, ("Rangaista_", "SukijaRangaista_")),188 (re_isoida, g10, ("isoida", "iseerata", "iso", "iseer", "Kanavoida", "Saneerata", "Voida", "Saneerata", re_isoida_x)),189 (re_aCi, ga, ([], 1, "a", 1)),190 (re_aCia, ga, ([], 2, "a", 2)),191 (re_aCinen, ga, ([], 2, "a", 2)),192 (re_oMi, ga, (list_oMi, 1, "o", 1)),193 (re_oMia, ga, (list_oMia, 2, "o", 2)),194 (re_oMinen, ga, (list_oMinen, 2, "o", 2)),195# (re_aali, ga, (list_aali, 2, "", 1)),196# (re_aalinen, ga, ([], 3, "", 2)),197# (re_iivi, ga, (["aktiivi"], 2, "", 1)),198# (re_iivinen, ga, ([], 3, "", 2)),199# (re_uuri, ga, (["kulttuuri"], 2, "", 1)),200# (re_yyri, ga, ([], 2, "", 1)),201# (re_ööri, ga, ([], 2, "", 1)),202# (re_torio, ga, ([], 3, "o", 3)),203 (re_oitin, g6, ("oit:", "oit:", "oit ", "ot ", "Suodatin", "Suodatin")),204 (re_oite, g6, ("oit:", "oit:", "oit ", "ot ", "Vaate", "Vaate")),205 (re_oittaa1, g6, ("o:", "oit:", "o ", "ot ", "Kirjoittaa", "Alittaa")),206 (re_oittaa2, g6, ("ö:", "öit:", "ö ", "öt ", "Kirjoittaa", "Alittaa")),207 (re_oittaa1, g6, ("oit:", "oit:", "oit ", "ot ", "Alittaa", "Alittaa")),208 (re_oittaa2, g6, ("öit:", "öit:", "öit ", "öt ", "Alittaa", "Alittaa")),209 (re_ottaa1, g6, ("ot:", "ot:", "ot ", "oit ", "Alittaa", "Alittaa")),210 (re_ottaa2, g6, ("öt:", "öt:", "öt ", "öit ", "Alittaa", "Alittaa")),211 (re_ottaa1, g6, ("o:", "o:", "o ", "oi ", "Ammottaa", "Ammottaa")),212 (re_ottaa2, g6, ("ö:", "ö:", "ö ", "öi ", "Ammottaa", "Ammottaa")),213 (re_oitella1, g6, ("oit:", "oit:", "oit ", "ot ", "Aatella", "Aatella")),214 (re_oitella2, g6, ("öit:", "öit:", "öit ", "öt ", "Aatella", "Aatella")),215 (re_otella1, g6, ("ot:", "ot:", "ot ", "oit ", "Aatella", "Aatella")),216 (re_otella2, g6, ("öt:", "öt:", "öt ", "öit ", "Aatella", "Aatella")),217 (re_ottua1, g6, ("ot:", "ot:", "ot ", "oit ", "Asettua", "Asettua")),218 (re_ottua2, g6, ("öt:", "öt:", "öt ", "öit ", "Asettua", "Asettua")),219 (re_oittua1, g6, ("oit:", "oit:", "oit ", "ot ", "Asettua", "Asettua")),220 (re_oittua2, g6, ("öit:", "öit:", "öit ", "öt ", "Asettua", "Asettua")),221 (re_uusio, gn, ("uusio", ("usio", ), ("usion", "usioon"), ("NimisanaAutio_a", "NimisanaPaperi_a"))),222 (re_tio, gn, ("tio", ("tsio", ), ("tsion", "tsioon"), ("NimisanaAutio_a", "NimisanaPaperi_a"))),223 (re_aatio, gn, ("aatio", ("atio", "atsio"), ("atsion", "atsioon"), ("NimisanaAutio_a", "NimisanaPaperi_a"))),224 (re_uutio, gn, ("uutio", ("utio", "utsio"), ("utsion", "utsioon"), ("NimisanaAutio_a", "NimisanaPaperi_a"))),225 (re_mmainen, g4, ("mmai ", "mai ", "mmai\t", "mai ")),226 (re_mmäinen, g4, ("mmäi ", "mäi ", "mmäi\t", "mäi ")),227]228def generate_all (line, pattern_list):229 for x in pattern_list:230 if x[0].match(line):231 x[1] (line, x[2])232 233def word_class (line):234 L = dict ([("[Lep]", "Paikannimi"),235 ("[Ll]", "Laatusana"),236 ("[Ln]", "Nimisana"),237 ("[Lnl]", "NimiLaatusana"),238 ("[Lt]", "")])239 return L[line[0:line.find("]")+1]]240# Sanoja, joilla on vain muutama vanha taivutusmuoto. Generoidaan ne erikseen,241# mutta vain sanoille, jotka ovat Joukahaisessa. Sanat ovat Nykysuomen242# sanakirjan taivutuskaavojen numeroiden mukaisessa järjestyksessä.243#244# Tuomo Tuomi: Suomen kielen käänteissanakirja, 2. painos.245# Suomalaisen Kirjallisuuden Seura 1980.246def write_word (line, word, lexicon):247 prefix = line[0:line.find (u" ")]248 A = u"a" if re_A.search(word) else u"ä"249 outfile.write (u"%s %s%s_%s ;\n" % (prefix, word_class(line), lexicon, A))250def write_ahven (line, word):251 if not line.startswith (u"[Lu]"):252 write_word (line, word, u"SukijaAhven")253def write_virkkaa (line, word):254 prefix = line[0:line.find (u" ")]255 outfile.write (u"%s SukijaVirkkaa_ä ;\n" % (prefix))256def write_paistaa (line, word):257 prefix = line[0:line.find (u" ")]258 outfile.write (u"%s SukijaPaistaa_a ;\n" % (prefix))259def write_paahtaa (line, word):260 prefix = line[0:line.find (u" ")]261 outfile.write (u"%s SukijaPaahtaa_a ;\n" % (prefix))262def write_taittaa (line, word):263 prefix = line[0:line.find (u" ")]264 outfile.write (u"%s SukijaTaittaa_a ;\n" % (prefix))265def write_palata (line, word):266 prefix = line[0:line.find (u" ")]267 outfile.write (u"%s SukijaPalata_a ;\n" % (prefix))268word_list = [269 (u"tällainen", ((u"tällai", u"tällai", u"NimiLaatusanaNainenInen_a", u"NimiLaatusanaNainenInen_ä"),270 (u"tällai", u"tälläi", u"NimiLaatusanaNainenInen_a", u"NimiLaatusanaNainenInen_aä"))),271 (u"lainen", lambda line, word: replace_and_write (line.replace(u"lai",u"läi"), u"NimiLaatusanaNainen_a", u"NimiLaatusanaNainen_ä")),272 # 38 pieni (4, 4). Juoni, moni, pieni, tyyni, (peilityyni, rasvatyyni).273 #274 # Nämä ovat tiedostossa poikkeavat-sukija.lexc275 #276## (u"juoni", [u"[Lnl][Xp]juoni[X]juon:juon NimiLaatusanaSukijaPieni_a ;"]),277## (u"moni", [u"[Ln][Xp]moni[X]mon:mon NimisanaSukijaPieni_a ;"]),278## (u"pieni", [u"[Ll][Xp]pieni[X]pien:pien LaatusanaSukijaPieni_ä ;"]),279## (u"tyyni", [u"[Ll][Xp]tyyni[X]tyyn:tyyn LaatusanaSukijaPieni_ä ;"]),280## (u"peilityyni", [u"[Ll][Xp]peilityyni[X]peili[Bm]tyyn:peilityyn LaatusanaSukijaPieni_ä ;"]),281## (u"rasvatyyni", [u"[Ll][Xp]rasvatyyni[X]rasva[Bm]tyyn:rasvatyyn LaatusanaSukijaPieni_ä ;"]),282 # 39 nuori (3, 3). Tuomi, s. 182, 184.283 #284 # Nämä ovat tiedostossa poikkeavat-sukija.lexc285 #286# (u"juuri", [u"[Ln][Xp]juuri[X]juur[Ses][Ny]na:juurna NimisanaLiOlV_a ;",287# u"[Ln][Xp]juuri[X]juur[Ses][Ny]ra:juurra NimisanaLiOlV_a ;"]),288# (u"nuori", [u"[Lnl][Xp]nuori[X]nuor[Ses][Ny]na:nuorna NimisanaLiOlV_a ;",289# u"[Lnl][Xp]nuori[X]nuor[Ses][Ny]ra:nuorra NimisanaLiOlV_a ;"]),290# (u"suuri", [u"[Lnl][Xp]suuri[X]suur[Ses][Ny]na:suurna NimisanaLiOlV_a ;",291# u"[Lnl][Xp]suuri[X]suur[Ses][Ny]ra:suurra NimisanaLiOlV_a ;"]),292 # 46 hapsi (1, 1). Tuomi, s. 190. -- Vvfst tunnistaa muodot "hasten" ja "hapsien".293 # hasna, hassa, hasten, hapsien -- Nämä ovat niin harvinaisia, että tarvitseeko näitä indeksoinnissa?294 #295# (u"hapsi", [u"[Ln][Xp]hapsi[X]has[Ses][Ny]na:hasna NimisanaLiOlV_a ;",296# u"[Ln][Xp]hapsi[X]has[Ses][Ny]sa:hassa NimisanaLiOlV_a ;"]),297 # 79 terve (4, 4). Tuomi s. 142, 143, 146.298 #299 # Nämä ovat tiedostossa poikkeavat-sukija.lexc300 #301# (u"tuore", [u"[Ll][Xp]tuore[X]tuore[Ses][Ny]nna:tuorenna NimisanaLiOlV_a ;"]),302# (u"vetre", [u"[Ll][Xp]vetre[X]vetre[Ses][Ny]nnä:vetrennä NimisanaLiOlV_ä ;"]),303# (u"päre", [u"[Ln][Xp]päre[X]päre[Ses][Ny]nnä:pärennä NimisanaLiOlV_ä ;"]),304# (u"terve", [u"[Lnl][Xp]terve[X]terve[Ses][Ny]nnä:tervennä NimisanaLiOlV_ä ;"]),305## (u"kaivu", [u"[Ln][Xp]kaivu[X]kaivu[Sill][Ny]usee:kaivuusee NimisanaLiOlN_a ;"]),306# (u"kaivu", [u"[Ln][Xp]kaivu[X]kaivu:kaivu NimisanaPuu_a ;",307# u"[Ln][Xp]kaivu[X]kaivu[Sill][Ny]usee:kaivuusee NimisanaLiOlN_a ;"]),308]309function_list = [310 # Herttua-tyyppisillä sanoilla on monikkomuodot, joissa ei ole o:ta (herttuilla, jne).311 #312 # 20 herttua (10, 10). Tuomi, s. 114, 116, 121, 124, 125.313 #314 (lambda line, word: outfile.write (u"[Ln][Xp]%s[X]%s:%s SukijaHerttua ;\n" %315 (word, word[0:len(word)-1], word[0:len(word)-1])),316 (u"aurtua",317 u"herttua",318 u"hierua",319 u"juolua",320 u"lastua",321 u"liettua",322 u"luusua",323 u"porstua",324 u"saarua",325 u"tanhua")),326# Vapaa ja tienoo ovat taivutuskaavoina SukijaVapaa.327#328 # 23 vapaa (8, 8). Tuomi, s. 1, 2.329 #330# (write_vapaa_tienoo,331# (u"kajaa",332# u"vajaa",333# u"vakaa",334# u"suklaa",335# u"harmaa",336# u"vapaa",337# u"nepaa",338# u"hurraa")),339 # 24 tienoo (14, 14). Tuomi, s. 345. Taipuu kuten vapaa.340 #341# (write_vapaa_tienoo,342# (u"kabeljoo",343# u"kalikoo",344# u"pikoo",345# u"talkoo",346# u"haloo",347# u"halloo",348# u"tienoo",349# u"poppoo",350# u"bigarroo",351# u"platoo",352# u"ehtoo",353# u"palttoo",354# u"ponttoo",355# u"nivoo")),356 # 33 lohi (2, 2). Tuomi, s. 151.357 # lohten, uuhten358 #359 (lambda line, word: outfile.write (u"[Ln][Xp]%s[X]%s:%s SukijaLohi ;\n" %360 (word, word[0:len(word)-1], word[0:len(word)-1])),361 (u"lohi",362 u"tyynen=meren=lohi", # On Joukahaisessa.363 u"uuhi")),364 # 34 lahti (2, 2). Tuomi, s. 193.365 # lahta (= lahtea), lahtein366 #367 (lambda line, word: write_word (line, word, "SukijaLahti"),368 (u"haahti",369 u"lahti")),370 # Ahven taipuu kuten sisar, paitsi että yksikön olento on myös ahvenna.371 #372 # 55 ahven (22, 23). Tuomi, s. 246, 247, 301, 302.373 #374 (write_ahven,375 (u"aamen",376 u"ahven",377 u"haiven",378 u"huomen",379 u"häiven",380 u"höyhen",381# u"ien", # On erikseen: ikene, ien.382 u"iljen",383 u"joutsen",384 u"jäsen",385 u"kymmen",386 u"kämmen",387 u"liemen",388 u"paimen",389 u"siemen",390 u"ruumen",391 u"terhen",392 u"taimen",393 u"tuumen",394 u"tyven",395 u"tyyven",396 u"uumen",397 u"vuomen")),398 # 69 kaunis (7, 6). Tuomi, s. 358.399 #400 (lambda line, word: write_word (line, word, "SukijaKaunis"),401 (u"kallis",402 u"aulis",403 u"valmis",404 u"kaunis",405# u"altis",406 u"tiivis")),407 (lambda line, word: write_word (line, word, "SukijaAltis"), ("altis", )),408 # 11 paistaa (9, 9). Tuomi s. 1, 2, 8, 11, 12, 15, 17.409 #410 (write_virkkaa, ("vilkkaa",411 "virkkaa")),412 (write_paistaa, ("maustaa", # Ei ole Tuomella, mutta Lönnrot-projektin kirjoissa taivutetaan maustin, maustit, maustimme...413 "paistaa",414 "raistaa",415 "uppo=paistaa")),416 (write_paahtaa, ("kaihtaa",417 "paahtaa", )),418 (write_taittaa, ("naittaa", # Onko Tuomen kirjassa?419 "saattaa",420 "taittaa",421 "palttaa",422 "varttaa")),423 # Avata -> avaja jne. Nykysuomen sanakirjan teonsanojen taivutuskaava 40.424 (write_palata, ("avata",425 "halata",426 "palata")),427 (lambda line, word: write_word (line, word, "SukijaLevätä"), ("levätä", )),428 (lambda line, word: write_word (line, word, "SukijaHylätä"), ("hyljätä", "hylätä")),429]430def convert_to_dictionary (word_list):431 l0 = map (lambda x : x[0], word_list)432 l1 = map (lambda x : x[1], word_list)433 return dict (zip (l0, l1))434sukija_dictionary = convert_to_dictionary (word_list)435def error (line):436 sys.stderr.write (line)437 sys.stderr.write ("Wrong format in sukija_dictionary.\n")438 sys.exit (1)439def write_list (line, key, data):440 for x in data:441 if type(x) == str:442 outfile.write (x + u"\n")443 else:444 error (line)445def write_tuple (line, key, g):446 if type(g[0]) == str:447 for i in range (1, len(g)):448 replace_and_write (line, g[0], g[i])449 elif type(g[0]) == tuple:450 for i in range (0, len(g)):451 if (len(g[i]) == 2):452 replace_and_write (line, g[i][0], g[i][1])453 else:454 s = line.replace (g[i][2], g[i][3])455 outfile.write (replace (s, g[i][0], g[i][1]))456 else:457 error (line)458# Extract base form from a line.459#460base_form_re = re.compile (u"\\[Xp\\]([^[]+)\\[X\\]", re.UNICODE)461def generate_word (r, line, sukija_dictionary):462 try:463 g = sukija_dictionary[r.group(1)]464 if type(g) == list:465 write_list (line, r.group(1), g)466 elif type(g) == tuple:467 write_tuple (line, r.group(1), g)468 elif type(g) == LambdaType:469 g (line, r.group(1))470 else:471 error (line)472 except KeyError: # It is not an error if a word is not in sukija_dictionary.473 pass474def generate_from_function (r, line, function_list):475 for x in function_list:476 if r.group(1) in x[1]:477 x[0] (line, r.group(1))478def generate_xiljoona (line):479 if (line.startswith ("[Sn]")):480 u = line.replace (u"miljoona@", u"miljona@")481 u = u.replace (u"miljoonat@", u"miljonat@")482 u = u.replace (u"biljoona@", u"biljona@")483 u = u.replace (u"biljoonat@", u"biljonat@")484 u = u.replace (u"triljoona@", u"triljona@")485 u = u.replace (u"triljoonat@", u"triljonat@")486 outfile.write (u)487 else:488 outfile.write (line.replace (u"iljoon", u"iljon"))489 if (line.startswith (u"@") and line.find (u"iljoonien:")):490 outfile.write (line.replace (u"iljoonien", u"iljoonain"))491 outfile.write (line.replace (u"iljoonien", u"iljonain"))492def write_arvaella (line):493 if line.startswith("[Lt][Xp]") and line.find ("Arvailla_") > 0:494 if not line.startswith ("[Lt][Xp]piillä[X]") and not line.startswith ("[Lt][Xp]viillä[X]"):495 line = line.replace ("il:", ":").replace("il ", " ").replace ("Arvailla_", "SukijaArvaella_")496 outfile.write (line)497ei_vertm = re.compile (u"@[PDC][.]EI_VERTM([.]ON)?@", re.UNICODE)498ei_yks = "@P.EI_YKS.ON@"499# Yksikintoista, yksikääntoista, kaksikaantoista, jne.500#501LUKUSANA_TOISTA =\502 "[Bc]toista[Xp][X]:kintoista Liitesana_a ;\n" +\503 "[Bc]toista:kintoista LukusananJälkiliite ;\n" +\504 "[Bc]toista:kintoista LukusanaKerroinTuhatta ;\n" +\505 "[Bc]toista:kintoista LukusananAlkuKerroin ;\n" +\506 "[Bc]toista[Xp][X]:kaantoista Liitesana_a ;\n" +\507 "[Bc]toista:kaantoista LukusananJälkiliite ;\n" +\508 "[Bc]toista:kaantoista LukusanaKerroinTuhatta ;\n" +\509 "[Bc]toista:kaantoista LukusananAlkuKerroin ;\n" +\510 "[Bc]toista[Xp][X]:kääntoista Liitesana_a ;\n" +\511 "[Bc]toista:kääntoista LukusananJälkiliite ;\n" +\512 "[Bc]toista:kääntoista LukusanaKerroinTuhatta ;\n" +\513 "[Bc]toista:kääntoista LukusananAlkuKerroin ;\n"514# Yhdeskintoista jne.515#516JÄRJESTYSLUKU_TOISTA = \517 "[Bc]toista[Xp][X]:kintoista Liitesana_a ;\n" +\518 "[Bc]toista:kintoista LukusananJälkiliiteJl ;\n" +\519 "[Bc]toista[Xp][X]:kaantoista Liitesana_a ;\n" +\520 "[Bc]toista:kaantoista LukusananJälkiliiteJl ;\n" +\521 "[Bc]toista[Xp][X]:kääntoista Liitesana_a ;\n" +\522 "[Bc]toista:kääntoista LukusananJälkiliiteJl ;\n"523sukija_additions = {524 "LEXICON Asemosana\n": "SukijaAsemosana ;\n",525 "LEXICON Sanasto_ee\n": "SukijaPoikkeavat_ee ;\n",526 "LEXICON Sanasto_em\n": "SukijaPoikkeavat_em ;\n",527 "LEXICON Sanasto_ep\n": "SukijaPoikkeavat_ep ;\n",528 "LEXICON Sanasto_h\n": "SukijaPoikkeavat_h ;\n",529 "LEXICON Sanasto_l\n": "SukijaPoikkeavat_l ;\n",530 "LEXICON Sanasto_n\n": "SukijaPoikkeavat_n ;\n",531 "LEXICON Sanasto_nl\n": "SukijaPoikkeavat_nl ;\n",532 "LEXICON Sanasto_p\n": "Sukija_p ;\n",533 "LEXICON Sanasto_t\n": "SukijaPoikkeavat_t ;\n",534 "LEXICON Sanasto_s\n": "SukijaPoikkeavat_s ;\n",535 "LEXICON Suhdesana\n": "SukijaSuhdesana ;\n",536 "LEXICON LukusananErikoisjälkiliite\n": "SukijaLukusananErikoisjälkiliite ;\n",537 "LEXICON Lukusana\n": "SukijaLukusana ;\n",538 "LEXICON Järjestysluku\n": "SukijaJärjestysluku ;\n",539 "LEXICON LukusanaToista\n": LUKUSANA_TOISTA, 540 "LEXICON JärjestyslukuToista\n": JÄRJESTYSLUKU_TOISTA,541 "LEXICON Omistusliite_a\n": "[O2y]s:s Liitesana_a ;\n",542 "LEXICON Omistusliite_ä\n": "[O2y]s:s Liitesana_ä ;\n",543 "LEXICON Omistusliite_aä\n": "[O2y]s:s Liitesana_aä ;\n"544# "LEXICON Omistusliite_a\n": "[O1y]in:in Liitesana_a ;\n[O2y]s:s Liitesana_a ;\n",545# "LEXICON Omistusliite_ä\n": "[O1y]in:in Liitesana_ä ;\n[O2y]s:s Liitesana_ä ;\n",546# "LEXICON Omistusliite_aä\n": "[O1y]in:in Liitesana_aä ;\n[O2y]s:s Liitesana_aä ;\n"547}548def write_sukija_additions (line, sukija_additions):549 try:550 outfile.write (sukija_additions[line])551 except KeyError:552 pass553# Copy Voikko vocabulary and insert forms that Sukija needs.554#555while True:556 line = infile.readline()557 if line == u"":558 break559 if line.find (u"[Tn4]mi@") == 0: # 4. nimitapa (puhu+minen) ei ole teonsanan taivutusmuoto.560 continue561 if line.find ("vihanta[X]") >= 0:562 line = line.replace ("Emäntä_", "SukijaVihanta_")563 line = re.sub (ei_vertm, "", line)564 if line.find (ei_yks) > 0 and line.startswith ("[L"):565 if not line.startswith ("[Ln][Xp]lehdes[X]"):566 line = line.replace (ei_yks, "")567 if line.find (u"=") >= 0:568 line = line.replace (u"@P.YS_EI_JATKOA.ON@", u"")569 if line.find ("lähtöinen") >= 0:570 line = line.replace ("@R.YS_ALKANUT@", "")571 if OPTIONS["sukija-ys"]:572 line = line.replace (u"@P.YS_EI_JATKOA.ON@", u"")573 line = line.replace (u"@D.YS_EI_JATKOA@", u"")574 line = line.replace (u"@C.YS_EI_JATKOA@", u"")575 outfile.write (line)576 write_sukija_additions (line, sukija_additions)577 generate_all (line, list_all)578 write_arvaella (line)579 r = base_form_re.search (line)580 if r:581 generate_word (r, line, sukija_dictionary)582 generate_from_function (r, line, function_list)583 if (re_Xiljoona.search (line)):584 generate_xiljoona (line)585infile.close()586outfile.write (u"\n\n\n")587while True:588 line = sukijafile.readline()589 if line == u"":590 break591 if u"!" in line:592 line = line[0:line.find(u"!")]593 outfile.write (line)594sukijafile.close()...

Full Screen

Full Screen

results_to_matlab.py

Source:results_to_matlab.py Github

copy

Full Screen

1import matplotlib.pyplot as plt2import sys3import numpy as np4import re5import scipy.io6with open('step_response_tau_005.txt', 'r') as f:7 data = f.read()8def makere(_s):9 # return s.subs('[', '\[')10 f = r'([\deE\+\-\.]+)'11 s = _s.replace('[', R'\[')12 s = s.replace(']', R'\]')13 s = s.replace('(', R'\(')14 s = s.replace(')', R'\)')15 s = s.replace('%f', f)16 return s17m = []18k = []19l = []20expr = makere('[inf] t=%f,torque=%f,theta=%f,phi=%f,dtheta=%f,dphi=%f,x=%f,y=%f')21observer = makere('[obs] q1 : %f q2: %f dq1: %f dq2: %f')22observer_no_input = makere('[obs_no_input] q1 : %f q2: %f dq1: %f dq2: %f')23for line in data.split('\n'):24 ans = re.match(expr, line)25 obs = re.match(observer,line)26 obs_no_input = re.match(observer_no_input,line)27 if ans is None:28 if obs is None:29 if obs_no_input is None:30 continue31 q1,q2,dq1,dq2 = obs_no_input.groups()32 l += [(q1,q2,dq1,dq2)]33 continue34 q1,q2,dq1,dq2 = obs.groups()35 k += [(q1,q2,dq1,dq2)]36 continue37 t,torque,theta,phi,dtheta,dphi,x,y = ans.groups()38 m += [(t,torque,theta,phi,dtheta,dphi,x,y)]39m = np.array(m, dtype=float)40#k = np.array(k,dtype=float)41#l = np.array(l,dtype=float)42plt.plot(m[:,0], m[:,1]*100, label='torque')43plt.plot(m[:,0], m[:,2], label='theta')44plt.plot(m[:,0], m[:,3], label='phi')45plt.plot(m[:,0], m[:,4], label='dtheta')46plt.plot(m[:,0], m[:,5], label='dphi')47plt.grid()48plt.legend()49plt.show()50np.savetxt('step_response_tau_005_matlab.txt',m)51#np.savetxt('observer.txt',k)...

Full Screen

Full Screen

test_makere.py

Source:test_makere.py Github

copy

Full Screen

1from makere.makere import Makere2import re3import unittest 4class TestMakere(unittest.TestCase):5 def setUp(self):6 self.o1 = Makere(['abc', 'xyz'])7 self.o2 = Makere(r'E:\pplprhr\makere\makere\tests\test_file.txt')8 9 def test_find_stem(self):10 res = self.o1._find_stem()11 self.assertEqual(res, [])12 res = self.o2._find_stem()13 self.assertEqual(res, ['http', '://www.lifewire.com/', '-google-'])14 def test_to_list(self):15 res = self.o1._to_lists()16 self.assertEqual(res, [[['a', 'b', 'c']], [['x','y', 'z']]])17 # res = self.o2._to_lists()18 # self.assertEqual(res, [[['a', 'b', 'c']], [['x','y', 'z']]])19 def test_compress(self):20 self.o1._compress()21 self.assertEqual(self.o1.processedWords, [[['([a-z])+']], [['([a-z])+']]])22 # self.o2._compress()23 # self.assertEqual(self.o2.processedWords, [[['a', 'b', 'c']], [['x','y', 'z']]])24 def test_make(self):25 #res = self.o1.make()26 # self.assertEqual(res, ['abc', 'xyz'])27 res = self.o2.make()28 p = re.compile(res)29 print res30 for wrd in self.o2.words:31 self.assertTrue(re.match(p, wrd))32 # self.assertEqual(res, ['abc', 'xyz'])33if __name__ == '__main__':...

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run avocado automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful