我有一个html文件,我只检索文本正文
我想打印一行
现在我正在打印
for line in newName.body(text=True):
print line
这给了我身体里的一切 我想要的是打印像
for line in newName.body(text=True):
print line[257:_____] # this is where i need help
而不是 _ _或选择另一个数字来结束我希望它转到换行符 所以它看起来像
for line in newName.body(text=True):
print line[257:'\n']
然而,这种剂量起作用
我怎样才能做到这一点?
我正在处理的文本位于 身体 预 我想要的文字 /预 /体
答案 0 :(得分:6)
您可以使用.partition()
method获取第一行:
first_line = newName.body.getText().partition("\n")[0]
假设newName
是BeautifulSoup
个对象。它通常命名为soup
。
从html中的第一个<pre>
标记获取文字:
text = soup.pre.string
获取文本中的行列表:
list_of_lines = text.splitlines()
如果您想在文本中保留行尾标记:
list_of_lines = text.splitlines(True)
从列表中获取第i行:
ith_line = list_of_lines[i]
注意:从零开始的索引,例如,i = 2
对应于第3行。
答案 1 :(得分:1)
无法保证您的HTML文件包含多行。网页可以按行排列,但页面的结构不必与标记的结构相匹配,反之亦然。
可以肯定的是,试试这个:
print len(newName.body(text = True).split(&#39; \ n&#39;))
如果值> 1,那么您应该能够获得所需的行:
newName.body(文字=真).split(&#39; \ n&#39;)[257]
也许不是最优雅的方式,但如果实际上有多条线,它就有效。