[英]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.