我对Python很新......
我正在编写一个使用urllib2
库来搜索某个网页的代码。我使用命令re.findall
来搜索此网页上的特定字符串。但是,我想提取这些字符串出现的整个行,而不是提取这些特定的字符串。
例如,假设我在网页上搜索“hello”这个词,如下所示:
你好,我的名字是鲍勃。我是鲍勃。
我的朋友是简。
我的名字是简......你好!
我想提取其中包含“hello”的行。 (这意味着我想要提取第一行和第三行。)这是我在下面使用的,这显然是错误的,因为它只提取单词,而不是单词出现的整行:
Page_Content = urllib2.urlopen(My_URL).read()
Matches = re.findall("hello", Page_Content)
如何修改此代码以提取整行?我是否必须使用某种类型的for循环并逐行搜索?如果是这样,我将如何做到这一点?
for line in Page_Content
[code here]
答案 0 :(得分:0)
对于正则表达式问题,您可以迭代文件并使用re.search
for line in content:
if re.search("hello",line):
print line
或更好,首先编译
val pat = re.compile("hello")
for line in content:
if pat.search(line):
print line
答案 1 :(得分:0)
我喜欢Eran的方法,但这是使用正则表达式的另一种方法,避免使用for
循环:
pattern = re.compile("\n.*hello.*\n")
matching_lines = re.findall(pattern, Page_Content)
通过用\n
包围模式,我们确保匹配整行。 .*
是“任何字符零或更多”的正则表达式,因此它将匹配任何带有“hello”的行。