-1

我对Python很陌生...

我正在编写一个使用该urllib2库搜索某个网页的代码。我正在使用该命令re.findall在此网页上搜索特定字符串。但是,我不想提取这些特定的字符串,而是要提取这些字符串出现的整行。

例如,假设我在一个如下所示的网页上搜索单词“hello”:

你好,我的名字是鲍勃。我是鲍勃。

我的朋友是简。

我的名字是简...你好!

我想提取其中包含“你好”的行。(这意味着我想提取第一行和第三行。)这是我在下面使用的,这显然是错误的,因为它只提取单词,而不是单词出现的整行:

Page_Content = urllib2.urlopen(My_URL).read()
Matches = re.findall("hello", Page_Content)

我将如何修改此代码以提取整行?我是否必须使用某种 for 循环并逐行搜索?如果是这样,我将如何去做?

for line in Page_Content
[code here]

?

4

2 回答 2

0

对于正则表达式问题,您可以遍历文件并使用 re.search

for line in content:
   if re.search("hello",line):
      print line

或者更好,先编译 re

val pat = re.compile("hello")    
for line in content:
   if pat.search(line):
       print line
于 2013-09-22T16:50:19.567 回答
0

我喜欢 Eran 的方法,但这是另一种使用正则表达式并避免使用for循环的方法:

pattern = re.compile("\n.*hello.*\n")
matching_lines = re.findall(pattern, Page_Content)

通过用 包围模式\n,我们确保我们匹配整行。这.*是“零个或多个任何字符”的正则表达式,因此它将匹配其中包含“hello”的任何行。

于 2013-09-22T18:41:12.893 回答