我有一些非常简单的代码输出:
Name
Workplace
And a abstract
然后,这一过程一遍又一遍地重复。所以:
NameA
WorkplaceA
And a abstractA
NameB
WorkplaceB
And a abstractB
etc...
我需要把它分成三列:
NameCol WorkplaceCol AbstractCol
NameA WorkplaceA AbstractA
NameB WorkplaceB AbstractB
NameC WorkplaceC AbstractC
etc...
当我的代码找到一个<h1>
标记时,它会循环回到开始。但是,我不显示此标记。因此,一个记录是名称、工作场所和摘要,直到它遇到一个新的<h1>
标记。你知道吗
以下是我的代码:
headernum = 0
i = 0
x = soup.find_all("h1")
for i in range(len(x)):
header = soup.find_all('h1')[headernum]
name = header.find_all_next('p')[1]
print(name.text)
workplace = name.find_all_next('i')[0]
print(workplace.text)
abstract = []
for elem in name.next_siblings:
if elem.name == 'h1':
break
if elem.name != 'p':
continue
abstract.append(elem.get_text())
x = " ".join(abstract).replace("\n", " ").encode('utf-8')
print(x)
i += 1
headernum += 1
我正在努力把它分开,并把列。你知道吗
如果您想处理自己的输入格式,您需要 一些假设。对于这个代码示例,我假设“h1”出现在三行集合之间。如果中间允许,代码需要稍微不同。你知道吗
想法:
编写一个生成器函数,循环遍历文本并以字典形式返回每一整行。
全部收集
当您将问题标记为“pandas”时,将结果移到pandas数据框中
这是一个有效的例子。你知道吗
数据帧打印为
如果您需要像您的示例一样打印数据帧, 下面是示例代码。你知道吗
输出
注意:我使用的是python3.6,如果您使用的是旧版本,则需要更改print命令。你知道吗
相比之下,使用Pandas可以这样做(使用上面代码中的示例)
输出相同的结果。你知道吗
假设你有这样一个df:
你可以做:
它会给你:
相关问题 更多 >
编程相关推荐