Noble Skrevet 15. juli 2010 Del Skrevet 15. juli 2010 Prøver å sette inn ${color white} ${color} på hver side av en dato i python. Mitt nåværende regex fungerer ikke dersom dagen er en mandag pga da er det ikke et mellomrom forran datoen. Om jeg fjerner mellomrommet forran datoen vil den feks ta 18 og 28 om dagens dato er 8, noe som er uønsket. Forslag? #!/usr/bin/python import time, calendar, re, string localtime = time.localtime(time.time()) i = localtime[1] for i in range(i,i+1): cal = calendar.month(localtime[0],i) regex = calendar.month_name[localtime[1]] replace = '${color}%s' % regex # cal = re.sub(regex,replace,cal) + '${color}' if re.search(regex,cal): regexp = " %d " % localtime[2] replace = '${color white}%s${color}' % regexp cal = re.sub(regexp,replace,cal) print cal Lenke til kommentar
FraXinuS Skrevet 16. juli 2010 Del Skrevet 16. juli 2010 Dette skal fungere tror jeg: #!/usr/bin/python import time, calendar, re, string localtime = time.localtime(time.time()) i = localtime[1] for i in range(i,i+1): cal = calendar.month(localtime[0],i) regex = calendar.month_name[localtime[1]] replace = '${color}%s' % regex # cal = re.sub(regex,replace,cal) + '${color}' if re.search(regex,cal): regexp = "(\s)(%d)(\s)" % localtime[2] replace = r'\1${color white}\2${color}\3' cal = re.sub(regexp,replace,cal, 1) print cal Lenke til kommentar
asicman Skrevet 18. juli 2010 Del Skrevet 18. juli 2010 Forslag? Du har fått et bra svar av FraXinuS, så jeg har bare et par kommentarer #! regex = calendar.month_name[localtime[1]] replace = '${color}%s' % regex # cal = re.sub(regex,replace,cal) + '${color}' if re.search(regex,cal): regexp = " %d " % localtime[2] replace = '${color white}%s${color}' % regexp cal = re.sub(regexp,replace,cal) print cal Det blir litt rart å ha en regexp verdi for search og så en annen regexp verdi for replace senere. I den første kan '10' gi treff på 2010, men du vil erstatte i '10' juli. Du bør ikke bruke % da det sannsynligvis vil forsvinne i senere versjoner av Python (er det ikke gøy å programmere i et "moving target" språk?). Bruk heller format eller konkatenering (+) En annen mulighet (egentlig ikke noe bedre i dette tilfellet) enn å bruke white space eksakt tall white space er ikke siffer eksakt tall ikke siffer: regexp = "(\D)" + str(localtime[2]) + "(\D)" replace=r'\1${color white}' + str(localtime[2]) + '${color}\\2' if re.search(regexp,cal): newcal = re.sub(regexp,replace,cal) Lenke til kommentar
Noble Skrevet 18. juli 2010 Forfatter Del Skrevet 18. juli 2010 Takker for svar! Det fungerer fint nå Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå