Python拆分为换行符

时间:2013-02-10 18:27:23

标签: python string split beautifulsoup urllib2

我有一个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'] 
然而,这种剂量起作用 我怎样才能做到这一点?

我正在处理的文本位于     身体     预         我想要的文字     /预     /体

2 个答案:

答案 0 :(得分:6)

您可以使用.partition() method获取第一行:

first_line = newName.body.getText().partition("\n")[0]

假设newNameBeautifulSoup个对象。它通常命名为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]

也许不是最优雅的方式,但如果实际上有多条线,它就有效。