gon2

Untitled

Sep 5th, 2019
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.77 KB | None | 0 0
  1. import re
  2. import sys
  3. import string
  4.  
  5. def tilreidari(textaskra):
  6.   texti = ""
  7.  
  8.   for lina in textaskra:
  9.     # bilum breytt í nýja línu, ef ný málsgrein er auð lína á milli sem viðhelst
  10.     lina = re.sub(r"\s", "\n", lina)
  11.  
  12.     ### greinarmerki fyrir utan punkt
  13.     # stafur svo greinarmerkið svo bil + algeng greinarmerki => aðskiljum (tökum líka skástrik út hérna því í yfirgnæfandi líkur á urli)
  14.     regex = "(.)([" + re.escape(string.punctuation.replace('.', '').replace('/', '')) + "])[\s\.,!?]"
  15.     lina = re.sub(regex, r"\1\n\2\n", lina)
  16.     # bil + algeng greinarmerki svo greinarmerkið svo stafur => aðskiljum
  17.     regex = "[\s\.,!?]([" + re.escape(string.punctuation.replace('.', '')) + "])(.)"
  18.     lina = re.sub(regex, r"\n\1\n\2", lina)
  19.     # ef það er svigi inní orði (t.d. upplýst(ur)) myndi ) lenda í nýrri línu => lögum það
  20.     regex = "(\w+\(\w+)\n(\))"
  21.     lina = re.sub(regex, r"\1\2", lina)
  22.  
  23.     ### punktur
  24.     # stafur, punktur, bil og svo stór stafur => aðskiljum
  25.     regex = r"(\w)\.\s([A-ZÁÉÍÓÚÝÆÖÞ])"
  26.     lina = re.sub(regex, r"\1\n.\n\2", lina)
  27.     # línan endar á punkti => aðskilja
  28.     lina = re.sub(r"\.$", "\n.", lina)
  29.     # ef línan hefst á tölu með fylgjandi punkti erum við með upptalningu og viljum ekki aðskilja
  30.     lina = re.sub(r"^(\d*)\n\.", r"\1.", lina)
  31.    
  32.     # ef fleiri en ein auð lína í röð => breytum í eina auða línu
  33.     lina = re.sub(r"^\s*\n$", r"\n", lina)
  34.    
  35.     texti += lina
  36.  
  37.   return texti
  38.  
  39.  
  40. # fyrsta arg er input skrá, annað er output skrá
  41. inp = sys.argv[1]
  42. out = sys.argv[2]
  43. # lesum skránna
  44. textaskra = open(inp, "r")
  45. # tilreiðum
  46. texti_t = tilreidari(textaskra)
  47. # vistum
  48. out_file = open(out, "w")
  49. out_file.write(texti_t)
  50. out_file.close()
Advertisement
Add Comment
Please, Sign In to add comment