為什麼這篇python讀取檔案鄉民發文收入到精華區:因為在python讀取檔案這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者schedule6666 (schedule)看板Python標題[問題] 讀取檔案後使用正規表...
小妹為Python超新手,如果問了奇怪的問題,還請大家包涵。
最近在練習在pycharm讀取電腦中的檔案。
檔案內容如下:
Joe's email is [email protected]
Tom's email is [email protected]
檔名:email.txt
pycharm裡的檔案為:
import sys
import os
import re
fp= open("C:\\Users\\haha\\Desktop\\email.txt","r")
text =fp.readlines()
print(text)
for w in text:
sent= re.match(r'([\w.-]+@[\w.-])+',w)
print(sent)
fp.close()
預期會print出來的樣子如下:
[email protected]
[email protected]
但編譯執行後出現的樣子如下:
["Joe's email is [email protected]\n", "Tom's email is [email protected]"]
None
None
<_sre.SRE_Match object at 0x02174960>
想請問版上各位高手是哪個地方出錯了呢?
--
那個…我剛剛發現原因了…
因為正規表示法接受的格式為string,但我從上面的檔案讀的格式是清單(list)
這就是我無法編譯執行的原因…我把清單讀成字串就可以了。
程式如下:
import string
import sys
import os
import re
fp= open("C:\\Users\\haha\\Desktop\\email.txt","r")
text =fp.readlines()
text1=''.join(text)
print(text1)
sent = re.findall(r"[\w.-]+@[\w_.-]+", text1)
print(sent)
fp.close()
感謝各位高手的幫忙^^
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.24.145
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1502193837.A.3C2.html
錯誤如下(以findall為例)
["Joe's email is [email protected]\n", "Tom's email is [email protected]\n", '[email protected]']
Traceback (most recent call last):
File "C:/Users/mlchen/PycharmProjects/untitled/Regular_expression.py", line 21, in <module>
sent = re.findall(r"[\w.-]+@[\w_.-]+", text)
File "C:\Python27\lib\re.py", line 181, in findall
return _compile(pattern, flags).findall(string)
TypeError: expected string or buffer
Process finished with exit code 1
※ 編輯: schedule6666 (36.231.24.145), 08/08/2017 21:08:24
※ 編輯: schedule6666 (36.231.24.145), 08/08/2017 21:27:16
※ 編輯: schedule6666 (36.231.24.145), 08/08/2017 21:28:11
※ 編輯: schedule6666 (36.231.24.145), 08/08/2017 21:30:50
照你的說法,所以我在一開始讀檔案的時候,python是預設將txt檔裡面的東西讀成字串,
然後我要自已讀成list嗎?
第二個問題是,因為我只是練習要用正規表示法去抓e-mail,所以不太懂為什麼要讀
list呢? 才方便做後續動作是指要把資料存在MySQL嗎?
※ 編輯: schedule6666 (36.231.24.145), 08/09/2017 16:07:16
※ 編輯: schedule6666 (36.231.24.145), 08/09/2017 16:09:13