Usuari:TronaBot/Python/common.py: diferència entre les revisions

Contingut suprimit Contingut afegit
mCap resum de modificació
mCap resum de modificació
Línia 1:
Aquest mòdul és fonamental per a executar la majoria d'scripts recopilats al [[Especial:Cerca per prefix/Usuari:TronaBot/Python/|viquirepositori]].
 
Hi ha una versió actualitzada al [//toolserver.org/~pasqual/pyuserlib/ tolserver]
 
<source lang=Python>
#!/usr/bin/python2.7
#-*- coding:utf8 -*-
Linha 106 ⟶ 101:
def read(self):
"""read a text file and return its content"""
if not self.exists():
return word""
f = cs.open(self._fullname, "r", "utf8")
data = f.read()
Linha 113 ⟶ 110:
def read_lines(self):
"""read a text file and return its content splitted by new line characters"""
f = cs.open(self._fullname, "r", "utf8")
#f.readlines() keeps the new line char,
#I prefer data.splitlines() after data=f.read().
data = fself.read()
f.close()
return data.splitlines()
 
Linha 226 ⟶ 221:
"""
def __init__(self, obj=None):
locale.setlocale(locale.LC_TIME, on_win and "Catalan_Spain.1252" or "ca_ES")
self._obj = None
if not obj:
Linha 312 ⟶ 308:
def local_month(self):
return self._obj.strftime("%B")
 
def short_local_month(self):
return self._obj.strftime("%b")
 
def local_weekday(self):
return self._obj.strftime("%A")
 
def short_local_weekday(self):
return self._obj.strftime("%a")
 
def local_time(self):
Linha 354 ⟶ 356:
 
def to_long_string(self):
day = int(self._obj.strftime("%d"))
art = "l'" if day in (1,11) else "el "
prep = "d'" if self.local_month()[0] in "ao" else "de "
s =return self._obj.strftime("el {}%A %d{} {prep}%B del %Y a les %H:%M:%S".format(prep=art, day, prep))
return re.sub(r" 0(\d )", r" \1", s)
 
def to_short_string(self):
Linha 378 ⟶ 381:
return td.days, hours, minutes, seconds, td.microseconds
 
class List(object):
sorting_pairs={
def __init__(self, _list):
u"àáâäãăǎąåā": "a", u'æǣ': "ae",
self._list = _list
u'ḃɓ': "b",
self._sorting_pairs = {
u'çćčćĉċ': "c",
u'đḍďḋ'"àáâäãăǎąåā": "da", u"ð"'æǣ': "dzae",
u'èéêëẽēęḃɓ': "eb",
u'ḟƒçćčćĉċ': "fc",
u'ĝġģğđḍďḋ': "gd", u"ð": "dz",
u'ĥħèéêëẽēę': "he",
u'ìíîïīįḟƒ': "i", u'ij': "ijf",
u'ĵĝġģğ': "jg",
u'ķĥħ': "kh",
u'ŀļḷḹľłìíîïīį': "li", u'ij': "ij",
u'ñńňĵ': "nj",
u'ḃɓķ': "bk",
u'òóôöõøōǫ': "o", u'œ': "oe",
u'ŀļḷḹľł': "pl",
u'ŗřṛṝñńň': "rn",
u'şṡšŝòóôöõøōǫ': "so", u'ßœ': "szoe",
u'ţṫṭ': "t", u'Þ': "tzp",
u'ùúûüŭūųŗřṛṝ': "ur",
u'ẁŵẅƿşṡšŝ': "ws", u'ß': "sz",
u'ýỳŷÿȳỹţṫṭ': "yt", u'Þ': "tz",
u'źžżùúûüŭūų': "zu",
u'ẁŵẅƿ': "w",
}
u'ýỳŷÿȳỹ': "y",
nakedletter_pairs={
u'źžż': "z"
u"àáâäãăǎąåā": "a", u'æǣ': "ae",
}
u'ḃɓ': "b",
 
u'çćčćĉċ': "c",
self._nakedletter_pairs = {
u'đḍďḋð': "d",
u"àáâäãăǎąåā": "a", u'æǣ': "ae",
u'èéêëẽēę': "e",
u'ḟƒḃɓ': "fb",
u'ĝġģğçćčćĉċ': "gc",
u'ĥħđḍďḋð': "hd",
u'èéêëẽēę': "e",
u'ìíîïīį': "i", u'ij': "ij",
u'ĵḟƒ': "jf",
u'ķĝġģğ': "kg",
u'ŀļḷḹľłĥħ': "lh",
u'ñńňìíîïīį': "ni", u'ij': "ij",
u'ḃɓĵ': "bj",
u'òóôöõøōǫ': "o", u'œ': "oe",
u'ķ': "pk",
u'ŗřṛṝŀļḷḹľł': "rl",
u'şṡšŝñńň': "s", u'ß': "szn",
u'ţṫṭòóôöõøōǫ': "to", u'Þœ': "thoe",
u'ùúûüŭūų': "up",
u'ẁŵẅƿŗřṛṝ': "wr",
u'ýỳŷÿȳỹşṡšŝ': "ys", u'ß': "sz",
u'źžżţṫṭ': "zt", u'Þ': "th",
u'ùúûüŭūų': "u",
}
u'ẁŵẅƿ': "w",
def simplify_chars(word, sorting=True):
u'ýỳŷÿȳỹ': "y",
#simplifiquem els diacrítics per a l'ordre alfabètic
u'źžż': "z"
pairs = sorting_pairs if sorting else nakedletter_pairs
}
diacritics = "".join(pairs.keys())
 
word = word.lower()
def simplify_chars(self, word, sorting=True):
for ch in word:
#simplifiquem els diacrítics per a l'ordre alfabètic
if ch in diacritics:
pairs = self._sorting_pairs if sorting else self._nakedletter_pairs
for keys in pairs:
diacritics = "".join(pairs.keys())
if ch in keys:
word = word.replacelower(ch, pairs[keys])
for ch in word:
break
if ch in diacritics:
word=word.replace(u"l·l","ll")
for keys in pairs:
word = re.sub("\W","!", word)
if ch in keys:
return word
word=word.replace(ch, pairs[keys])
break
word=word.replace(u"l·l","ll")
returnword = re.sub(r" 0(\d )W", r" \1!", sword)
return word
 
def sort_list(old_listself):
#ordena una llista
simplifiedlist={}
for word in old_listself._list:
simplifiedlist[self.simplify_chars(word)]=word
new_list=[]
for word in sorted(simplifiedlist.keys()):
new_list.append(simplifiedlist[word])
return new_list
#compat with old scripts
sort_list = lambda l: List(l).sort_list()
 
def get_diffs(new, old):
Linha 793 ⟶ 803:
print date1-date2
print time_diff(date1.to_datetime())
printf("$3 $2 $1 $f", 1, 2, 3, f="4 5")
printf("$f", f="4 5")
fnc = lambda : x
Linha 802 ⟶ 812:
print Date(Date().replace(hour=5,year=2001)).to_api()
print ", ".join([datetime.strftime(datetime.now().replace(month=i), "%b") for i in range(1,13)]).decode("cp1252")
</source>