Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > fr.comp.lang.python > #2946

Re: conversion en string raw

From Pierre Maurette <maurette.pierre@free.fr>
Newsgroups fr.comp.lang.python
Subject Re: conversion en string raw
Date 2016-10-19 09:05 +0200
Organization A noiseless patient Spider
Message-ID <mn.9a217e0a2cb3094d.79899@free.fr> (permalink)
References <580667da$0$3334$426a74cc@news.free.fr>

Show all headers | View raw


plp :
> Bonjour,
>
> J'écris un script pour supprimer les spams directement sur une boite IMAP. 
> Cela fonctionne mais pour l'instant, je stocke mes expressions régulières 
> directement dans mon code, dans une liste du style
>
> liste_regex = [
>   r'.*@vgtru.*',
>   r'.*@billgst.*',
>   r'.*@.*mademoiselle.*shopping.*',
>   r'.*@.*canalprivilege.*',
>   r'.*@.*design.*atylia.*',
>   r'.*@.*news.*info2pro.*'
>   ]
>
> Je fais ensuite un re.match() sur les mails avec cette liste et cela 
> fonctionne.
>
> Maintenant, je voudrais sortir les regex de mon script pour les stocker dans 
> un fichier texte (ou une bdd) comme cela :
> .*@vgtru.*
> .*@billgst.*
> .*@.*mademoiselle.*shopping.*
> .*@.*canalprivilege.*
> .*@.*design.*atylia.*
> .*@.*news.*info2pro.*
>
> J'arrive évidemment à lire le fichier txt et à alimenter la liste mais je 
> n'arrive pas à obtenir le format raw apporté par le r'' et donc mon 
> re.match() ne fonctionne plus.
>
> Avez-vous une solution ?

Justement l'avantage du fichier txt en entrée de données est de ne pas 
avoir à se "préoccuper du r". C'est un truc que j'utilise énormément 
pour pouvoir par exemple entrer des chemins par copier-coller. En 
particulier des chemins Windows sans modifier les antislashes, et 
encore plus en particulier quand un antislash est final.
Peut-être avez-vous loupé (trop réfléchi ?) votre fichier .txt ? 
Peut-être le lisez-vous mal ? C'est peut-être un des cas où un 'r' est 
nécessaire, et non un 'rb'.

Par curiosité, j'ai testé (sous Windows et Linux, en 2.7.x et 3.4.x, 
mêmes résultats):

fichier test.txt:
.*@vgtru\t.*
.*@billgst.*
.*@vgtru\t.*
.*@billgst.*
.*@.*mademoiselle.*shopping.*
.*@.*canalprivilege.*
.*@.*design.*atylia.*
.*@.*news.*info2pro.*

fichier test.py:
#!/usr/bin python3
# -*- coding: utf-8 -*-

import sys

print(sys.version)

liste_regex = [
    r'.*@vgtru\t.*',
    r'.*@billgst.*',
    '.*@vgtru\t.*',
    '.*@billgst.*',
    r'.*@.*mademoiselle.*shopping.*',
    r'.*@.*canalprivilege.*',
    r'.*@.*design.*atylia.*',
    r'.*@.*news.*info2pro.*'
    ]

with open('test.txt', 'r') as fichier:
    for n, line in enumerate(fichier.readlines()):
        print('%s [ %s (%s) | %s (%s) ]' % (line.strip() == 
liste_regex[n], line.strip(), type(line.strip()), liste_regex[n] , 
type(liste_regex[n])))

Par rapport à votre exemple, j'ai ajouté un \t qui justifie le r''. 
J'ai également ajouté deux lignes sans ce r'', dont une avec le 
caractère spécial. Le résultat est conforme à mes attentes, et à partir 
de ce résultat, je ne vois pas comment vos regex pourraient ne pas 
fonctionner:

D:\Pythons\WinPython-64bit-3.4.3.6\python-3.4.3.amd64\pythonw.exe 
U:/EclipseWorkspaces/EclipsePython/test/src/test.py
3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:44:40) [MSC v.1600 64 bit 
(AMD64)]
True [ .*@vgtru\t.* (<class 'str'>) | .*@vgtru\t.* (<class 'str'>) ]
True [ .*@billgst.* (<class 'str'>) | .*@billgst.* (<class 'str'>) ]
False [ .*@vgtru\t.* (<class 'str'>) | .*@vgtru	.* (<class 'str'>) ]
True [ .*@billgst.* (<class 'str'>) | .*@billgst.* (<class 'str'>) ]
True [ .*@.*mademoiselle.*shopping.* (<class 'str'>) | 
.*@.*mademoiselle.*shopping.* (<class 'str'>) ]
True [ .*@.*canalprivilege.* (<class 'str'>) | .*@.*canalprivilege.* 
(<class 'str'>) ]
True [ .*@.*design.*atylia.* (<class 'str'>) | .*@.*design.*atylia.* 
(<class 'str'>) ]
True [ .*@.*news.*info2pro.* (<class 'str'>) | .*@.*news.*info2pro.* 
(<class 'str'>) ]

Process finished with exit code 0


-- 
Pierre Maurette

Back to fr.comp.lang.python | Previous | NextPrevious in thread | Find similar


Thread

conversion en string raw plp <pourlapub@free.fr> - 2016-10-18 20:20 +0200
  Re: conversion en string raw Doug713705 <doug.letough@free.fr> - 2016-10-18 19:26 +0000
  Re: conversion en string raw Pierre Maurette <maurette.pierre@free.fr> - 2016-10-19 09:05 +0200

csiph-web