Could you let me know which platform this is on (Windows, *nix)? It may be a 
locale encoding issue -- the locale.setlocale() function allows the second 
argument to be a tuple of (locale_code, encoding), as below:

locale.setlocale(locale.LC_ALL, ('FR', 'UTF-8'))

Since this is for a one-shot (and presumably threading-agnostic) program, and 
a fairly trivially formatted date-string, I would suggest using 
datetime.strptime 
(http://docs.python.org/library/datetime.html#datetime.datetime.strptime) and 
not regular expressions (which IIRC have Issues with non-ASCII characters). 


----
Rami Chowdhury
"Ninety percent of everything is crap." -- Sturgeon's Law
408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD)

On Tuesday 18 August 2009 00:49:41 Gilles Ganault wrote:
> On Tue, 18 Aug 2009 17:10:50 +1000, Ben Finney
>
> <ben+pyt...@benfinney.id.au> wrote:
> >Luckily, you have access to the documentation to find out.
>
> I never used groups before. Thanks for showing me.
>
> At this point, the script is almost done, but the regex fails  if the
> month contains accented characters (eg. "Août", but fine if eg.
> "Jan").
>
> Adding a line to load the French locale doesn't help :-/
>
> Any idea what I could do to keep the regex happy?
>
> Thank you.
>
> ==============
> import re
> import apsw
> import locale
>
> #In case error due to accent in month name, but no soup 4 U
> locale.setlocale(locale.LC_ALL, 'FR')
>
> connection=apsw.Connection("test.sqlite")
> cursor=connection.cursor()
>
> re_inscription =
> re.compile(r"(?P<date>\d+)\s+(?P<month>\w+)\s+(?P<year>\d+)")
>
> sql = 'SELECT id,dateinscription,dateconnexion FROM mytable'
> rows=list(cursor.execute(sql))
> for row in rows:
>       dateinscription = row[1]
>       dateconnexion = row[2]
>
>       #Prints OK
>       print dateinscription
>
>       m = re_inscription.search(dateinscription)
>       if m:
>               day = m.group("date")
>               month = m.group("month")
>               year = m.group("year")
>               print "%s-%s-%s" % (year,month,day)
>       else:
>               print "No go"
> ==============

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to