首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在python中从html中抓取文本,然后将文本保存在一个没有运算符的变量中。\n

在python中从html中抓取文本,然后将文本保存在一个没有运算符的变量中。\n
EN

Stack Overflow用户
提问于 2020-04-08 05:49:45
回答 1查看 85关注 0票数 0

我使用以下代码将html文件中的文本保存在名为'data‘的变量中:

代码语言:javascript
运行
复制
from bs4 import BeautifulSoup, NavigableString, Tag

soup=BeautifulSoup(html, "lxml")
data = "ANALYSIS\n"
for header in soup.find_all('h2', text=re.compile('Analysis')):
    nextNode = header
    while True:
        nextNode = nextNode.nextSibling
        if nextNode is None:
            break
        if isinstance(nextNode, Tag):
            if nextNode.name == "h2":
                break
            data = data + "\n\n" + nextNode.text

我需要对我的数据变量做两件事: 1.删除一行中不需要的\n,2.保留段落之间的\n格式,但在调用数据变量时不显示\n。

我的目标是最终将数据变量保存到excel文件中。

目前我的输出是:

‘’ANALYSIS\n\n\nOVERVIEW\n\n财务改善很大;TSR优于\n同级。所有以盈利和盈利能力为基础的指标都显示出\n同比的改善。\n\n年度奖励\n\n激励指标基本不变,尽管目标目标的披露\n进一步增强。与前一年一样,2018年度激励计划由五个企业类别组成:(i)健康、\n安全和环境,(ii)运营,(iii)财务,(iv)战略\n里程碑和(v) TSR。该公司披露了每个类别中的某些指标,\n包括目标和相对指标的支出矩阵。\n为战略里程碑类别下的三个指标\n披露了不同的目标,这比2017年有所提高,当时指标中的目标通常是\n定性的。除了\n相对指标外,仍然没有披露阈值或最大目标。

但我想要的输出是(存储在excel文件中):

分析

概述

财务状况大幅改善;TSR的表现优于同行。所有基于收益和盈利能力的指标都显示出同比增长。

年度奖励

激励指标基本保持不变,尽管目标目标的披露进一步增强。与前一年一样,2018年度激励计划由五个企业类别组成:(i)健康、安全和环境,(ii)运营,(iii)财务,(iv)战略里程碑和(v) TSR。该公司披露了每个类别中的某些指标,包括目标和相对指标的支出矩阵。为战略里程碑类别下的三个指标披露了不同的目标,这与2017年相比有所改善,当时指标中的目标通常是定性的。除了相对指标之外,仍然没有披露阈值或最大目标。

请告诉我如何以这种格式保存数据?谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-04-08 07:41:18

你真的不需要\n\n在你想要做的事情中。应该做的是将数据追加到列表中。

代码语言:javascript
运行
复制
from bs4 import BeautifulSoup, NavigableString, Tag

soup=BeautifulSoup(html, "lxml")
data = ["ANALYSIS"]
for header in soup.find_all('h2', text=re.compile('Analysis')):
    nextNode = header
    while True:
        nextNode = nextNode.nextSibling
        if nextNode is None:
            break
        if isinstance(nextNode, Tag):
            if nextNode.name == "h2":
                break
            data.append(nextNode.text)

这使您可以执行许多文件IO操作,包括:

代码语言:javascript
运行
复制
with open("outfile.csv", "a") as output:
  for entry in data:
    outfile.write(data+"\n\n")
  outfile.close()

这里我使用CSV,因为CSV是一种与Excel兼容的无标记文件类型。Excel以与标准电子表格相同的格式呈现CSV文件。

要查看数据,您需要使用以下命令遍历数组:

代码语言:javascript
运行
复制
for entry in data:
  print(entry+"\n")

这将为您提供:

分析

概述

财务状况大幅改善;TSR的表现优于同行。所有基于收益和盈利能力的指标都显示出同比增长。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61089940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档