Συντονιστής: konnn

import codecs # open()
import re
RADIOLIST = 'radiolist.js'
class MediaData:
def __init__(self,title=None,city=None,id=None,logo=None):
self.title=title
self.city=city
self.id=id
self.logo=logo
class PlaylistGenerator:
def __init__(self):
with codecs.open(RADIOLIST, 'r', 'iso-8859-7') as f:
text = f.readlines() # Create a list with the lines
text = text[1:-1] # Remove first and last lines
text[-1] += "," # Add a comma at the last entry
mediadata=[]
for line in text:
line = line[2:-4] # clean-up each line
pedia = re.search(r'(mediatitle): (".*?").*?(city): (".*?").*?(mediaid): (\d+).*?(logo): (".*?")',line)
mediadata.append(MediaData(pedia.group(2),pedia.group(4),pedia.group(6),pedia.group(8)))
for md in mediadata:
print md.title, md.city, md.id, md.logo
if __name__ == '__main__':
playlist = PlaylistGenerator()

sv1jsb έγραψε: pedia = re.search(r'(mediatitle): (".*?").*?(city): (".*?").*?(mediaid): (\d+).*?(logo): (".*?")',line)


sv1jsb έγραψε:Κάνε μια διαλογή και ότι θέλεις ανέβασε το. Δεν γνωρίζω πως έχεις σκεφθεί το αποτέλεσμα αλλά νομίζω με το αντικείμενο MediaData είναι πιο ευανάγνωστος ο κώδικας.

from collections import namedtuple
MediaData = namedtuple('MediaData', ['title','city', 'id', 'logo'])
a = MediaData(title="Ubuntu", city="Athens", id="1", logo="no")
print a.city
pmav99 έγραψε:@sv1jsb
Έχεις δίκιο ότι η σύνταξη με "." είναι πιο εύχρηστη από αυτή του dictionary. Τελείως ενημερωτικά, σαν μια πιο lightweight εναλλακτική, αντί για custom κλάση μπορεί να χρησιμοποιηθεί ένα namedtuple.
- Κώδικας: Επιλογή όλων
from collections import namedtuple
MediaData = namedtuple('MediaData', ['title','city', 'id', 'logo'])
a = MediaData(title="Ubuntu", city="Athens", id="1", logo="no")
print a.city
Το βασικό του πλεονέκτημα έναντι της custom κλάσης είναι ότι είναι immutable.
Άλλος τύπος γενικού container είναι το Bunch. Εδώ σε πιο light έκδοση

simosx έγραψε:Υπάρχει και είναι το αρχείο radiolist.js.

def get_radio_list():
...
if __name__ == "__main__":
get_radio_list()
έγραψε:super(PlaylistGenerator, self).__init__()
pmav99 έγραψε:αντί για custom κλάση μπορεί να χρησιμοποιηθεί ένα namedtuple.
pmav99 έγραψε:Επίσης, νομίζω ότι μπορεί κάλλιστα η get_radio_list να γίνει μια μέθοδος της κλάσης αντί να είναι σε ξεχωριστό module.
