Trouver les numéros de téléphone de script python

le script python ci me permet de gratter des adresses de courriel à partir d'un fichier à l'aide d'expressions régulières.

Comment pourrais-je ajouter à ce que je puisse également obtenir des numéros de téléphone? Dites, si c'était le 7 chiffres ou 10 chiffres (avec l'indicatif de zone), et également en compte la parenthèse?

Mon script actuel peut être trouvé ci-dessous:

# filename variables
filename = 'file.txt'
newfilename = 'result.txt'

# read the file
if os.path.exists(filename):
        data = open(filename,'r')
        bulkemails = data.read()
else:
        print "File not found."
        raise SystemExit

# regex = [email protected]
r = re.compile(r'(\b[\w.]+@+[\w.]+.+[\w.]\b)')
results = r.findall(bulkemails)
emails = ""
for x in results:
        emails += str(x)+"\n"

# function to write file
def writefile():
        f = open(newfilename, 'w')
        f.write(emails)
        f.close()
        print "File written."

Regex pour les numéros de téléphone:

(\d{3}[-\.\s]\d{3}[-\.\s]\d{4}|\(\d{3}\)\s*\d{3}[-\.\s]\d{4}|\d{3}[-\.\s]\d{4})

Une autre expression régulière pour les numéros de téléphone:

(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?
Comme ceci: stackoverflow.com/questions/3302482/...
Avez-vous une regexp pour les numéros de téléphone pour nous critiquer?
Je viens d'ajouter à mon post ce que j'ai pour les numéros de téléphone. Ayant difficile la détection de 7 ou 10 chiffres qui n'ont pas de traits d'union.
Juste un "pays"/system ou ailleurs dans le monde? Avez-vous besoin de distinguer entre la cellule/mobile et fixe? Avez-vous besoin de distinguer le but spécial de tels chiffres 800 numéros? Possible +<"pays" code> préfixe?
J'espérais garder relativement simple. Donc pas de soucis pour le code du pays. Il devrait être en mesure d'accepter les indicatifs de zone, avec ou sans les parenthèses. Ou tout simplement des 7 chiffres. Il n'est pas nécessaire de distinguer entre les nombres comme 800 numéros.

OriginalL'auteur Aaron | 2010-10-06