我使用以下代码将html文件中的文本保存在名为'data‘的变量中:
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年相比有所改善,当时指标中的目标通常是定性的。除了相对指标之外,仍然没有披露阈值或最大目标。
请告诉我如何以这种格式保存数据?谢谢
发布于 2020-04-08 07:41:18
你真的不需要\n\n在你想要做的事情中。应该做的是将数据追加到列表中。
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+"\n\n")
outfile.close()
这里我使用CSV,因为CSV是一种与Excel兼容的无标记文件类型。Excel以与标准电子表格相同的格式呈现CSV文件。
要查看数据,您需要使用以下命令遍历数组:
for entry in data:
print(entry+"\n")
这将为您提供:
分析
概述
财务状况大幅改善;TSR的表现优于同行。所有基于收益和盈利能力的指标都显示出同比增长。
https://stackoverflow.com/questions/61089940
复制相似问题