我使用以下代码将html文件中的文本保存在名为"data"的变量中:
from bs4 import BeautifulSoup, NavigableString, Tag
soup=BeautifulSoup(html, "lxml")
data = "ANALYSISn"
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 + "nn" + nextNode.text
我需要对我的数据变量做两件事:1.删除行中不需要的\n,以及2.在段落之间保持\n格式,但在调用数据变量时不显示。
我的目标是将数据变量最终保存在excel文件中。
目前我的输出是:
'ANALYSIS\n\n\nOVERVIEW\n\n财务改善大幅改善;TSR表现出色。所有基于收益和盈利能力的指标都显示了同比增长。\年度激励\n\n尽管目标目标的披露进一步加强,但激励指标基本上没有变化。与前一年一样,2018年的年度创新计划由五个企业类别组成:(i(健康、安全和环境,(ii(运营,(iii(财务,(iv(战略里程碑,以及(v(TSR。该公司披露了每个类别中的某些指标,包括相关指标的目标和支出矩阵。披露了战略里程碑类别下的三个指标的不同目标,这比2017年有所改进,当时该指标中的目标通常是定性的。除了相对指标外,没有披露阈值或最大目标。
但我想要的输出是(存储在excel文件中(:
分析
概述
财务状况大幅度改善;TSR的表现优于同行。所有基于盈利和盈利能力的指标都显示出同比改善。
年度激励
激励指标基本上没有变化,尽管目标目标的披露进一步加强。与前一年一样,2018年年度激励计划由五个企业类别组成:(i(健康、安全和环境,(ii(运营,(iii(财务,(iv(战略里程碑,以及(v(TSR。该公司披露了每个类别中的某些指标,包括相对指标的目标和支出矩阵。战略里程碑类别下的三个指标披露了不同的目标,这比2017年有所改进,当时指标中的目标通常是定性的。除了相对指标外,仍然没有披露阈值或最大目标。
请告诉我如何以这种格式保存数据?感谢
你真的不需要做什么。应该做的是将数据附加到列表中。
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操作,包括:
with open("outfile.csv", "a") as output:
for entry in data:
outfile.write(data+"nn")
outfile.close()
这里我使用的是CSV,因为CSV是一种无标记的Excel兼容文件类型。Excel以与标准电子表格相同的格式呈现CSV文件。
要查看数据,您需要使用遍历数组
for entry in data:
print(entry+"n")
这会给你:
分析
概述
财务状况大幅度改善;TSR的表现优于同行。所有基于盈利和盈利能力的指标都显示出同比改善。