使用Regex查看Python中的文本文件

jmcgrath207

我在这里想要完成的工作基本上是让Reg ex根据Python创建和编写的文本文件中的模式返回我想要的匹配项。

目前,我收到TypeError: 'NoneType' object is not iterable错误消息,但不确定为什么。如果我需要更多信息,请告诉我。

   #Opens Temp file 
TrueURL = open("TrueURL_tmp.txt","w+")

#Reviews Data grabbed from BeautifulSoup and write urls to file
for link in g_data:
    TrueURL.write(link.get("href") + '\n')

#Creates Regex Pattern for TrueURL_tmp
pattern = re.compile(r'thread/.*/*apple|thread/.*/*potato')
search_pattern = re.search(pattern, str(TrueURL))

#Uses Regex Pattern against TrueURL_tmp file.
for url in search_pattern:
    print (url)


#Closes and deletes file    
TrueURL.close() 
os.remove("TrueURL_tmp.txt")
帕德拉克·坎宁安(Padraic Cunningham)

您的搜索未返回任何匹配项,因为您是在str表示file object非实际文件内容的情况下进行搜索的。

您基本上正在搜索类似的内容:

<open file 'TrueURL_tmp.txt', mode 'w+' at 0x7f2d86522390>

如果要搜索文件内容,请关闭文件以确保内容被正确写入,然后重新打开并阅读各行,或者只是在循环中搜索 for link in g_data:

如果您实际上要写入临时文件,请使用一个临时文件:

from tempfile import TemporaryFile
with  TemporaryFile() as f:
    for link in g_data:
        f.write(link.get("href") + '\n')
    f.seek(0)
    #Creates Regex Pattern for TrueURL_tmp
    pattern = re.compile(r'thread/.*/*apple|thread/.*/*potato')
    search_pattern = re.search(pattern, f.read())

search_pattern是一个,_sre.SRE_Match object因此您可以呼叫组i,e,print(search_pattern.group())或者您想使用findAll。

 search_pattern = re.findall(pattern, f.read())

 for url in search_pattern:
     print (url)

我仍然认为在编写任何内容之前进行搜索可能是最好的方法,也许根本不编写,但是我不确定您实际要执行的操作是什么,因为我看不到文件如何适合您的操作,将其连接到字符串将实现相同的效果。

 pattern = re.compile(r'thread/.*/*apple|thread/.*/*potato')
 for link in g_data:
        match = pattern.search(link.get("href"))
        if match:
           print(match.group())

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章