Python 拆分为换行符

问题描述 投票:0回答:3

我有一个 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'] 

然而这并没有什么作用。
我怎样才能让它发挥作用?

我正在处理的文本位于:

body
    pre
        The text I want
    /pre
/body
python string split beautifulsoup urllib2
3个回答
8
投票

您可以使用

.partition()
方法来获取第一行:

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
对应于第三行。


2
投票

无法保证您的 HTML 文件有多于一行。网页可以按行布局,但页面的结构不必与标记的结构匹配,反之亦然。

为了确定起见,试试这个:

print len(newName.body(text=True).split(' '))

如果该值>1,那么你应该能够得到你需要的行,例如:

newName.body(text=True).split(' ')[257]

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


2
投票

您是否想要

line[127:line.find('\n')]
,因为您确定它来自
127
,那么同样您必须确定有一个
\n

© www.soinside.com 2019 - 2024. All rights reserved.