簡體   English   中英

從 .text 文件中提取電子郵件的 Python 腳本

[英]Python script to extract emails from .text file

我目前正在嘗試運行從 .txt 文件中提取所有電子郵件的腳本。 運行腳本時,我收到無效的語法錯誤。 也許有人可以幫助...

import re
in_file = open("C:\\Users\\Testing1_Emails.txt","rt")


for line in in_file:
    if re.match(r'[\w\.-]+@[\w\.-]+')
        print line

你必須寫:

if re.match(r'[\w\.-]+@[\w\.-]+',  line):

(添加“行”和“:”)

問題出在這里:

for line in in_file:
    if re.match(r'[\w\.-]+@[\w\.-]+')
        print line

if re.match(r'[\\w\\.-]+@[\\w\\.-]+')語句中,您不會以:

match 方法需要 2 個參數。

見: https : //docs.python.org/2/library/re.html#re.match

重新匹配(模式,字符串,標志= 0)

如果字符串開頭的零個或多個字符與正則表達式模式匹配,則返回相應的 MatchObject 實例。 如果字符串與模式不匹配,則返回 None; 請注意,這與零長度匹配不同。

請注意,即使在 MULTILINE 模式下, re.match() 也只會匹配字符串的開頭,而不是每行的開頭。

如果您想在字符串中的任何位置找到匹配項,請改用 search()(另請參閱 search() 與 match())。

大多數郵件 ID 允許使用字母、數字、點(.)、下划線(_),並且所有這些都肯定包含“@”。 我們可以使用此信息使用正則表達式編寫模式。

import re
pat = re.compile(r'[a-zA-Z0-9\._]+@[a-zA-Z\.]') # regex pattern

[az]+ 將匹配任何小寫字母,任意數量的出現
[0-9]+ 將匹配任何數字,任何出現次數
[.] 將匹配 '.'

此外,如果您想檢查您的模式是否與您的搜索字符串匹配,請在此處查看。 https://regexr.com/

例子: -

f = open("my_file.txt", "w")
f.write('walkup@cs.washington.edu, geb@cs.pitt.edu, walkup@cs.washington.edu \n')
mails = re.findall(r"[a-z]+@[a-z\.]+", f.read())
print(list(set(mails)))

出站:['walkup@cs.washington.edu'、'geb@cs.pitt.edu'、'walkup@cs.washington.edu']

注意:re.findall() 在內部對指定的模式應用 re.pattern()。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM