按“*\n”拆分列表内容到 pandas 数据框
Split list content by "*\n" to pandas dataframe
我正在使用 beautiful soup 通过以下代码从维基百科中抓取一些内容:
import requests
from bs4 import BeautifulSoup
import urllib.request, json
s = 'September%2011'
url = 'https://en.wikipedia.org/w/api.php?action=query&titles={0}&prop=revisions&rvprop=content&rvsection=1&format=xml&formatversion=2'.format(s)
r = requests.get(url)
print(r.status_code)
content = r.text
events = []
soup = BeautifulSoup(content, "lxml")
events = [events.text for events in soup.find_all("rev")]
print(events)
内容是发生在某一天的事件。在维基百科上,每个事件都显示为一个点,但从 API 中它显示为一个长列表:
我想将内容放入一个数据框中,每个事件都有一个单独的行,即每次有一个“\n*”。
我查看了一些重新列出拆分的答案,但不知道如何在这种情况下应用。
试试这个:
df = pd.DataFrame(events[0].split('\n*')[1:], columns=["Events"])
print(df)
Events
0 [[1185]] – [[Isaac II Angelos]] kills [[...
1 [[1226]] – The first recorded instance o...
2 [[1297]] – [[Battle of Stirling Bridge]]...
3 [[1390]] – [[Lithuanian Civil War (1389–...
...
我正在使用 beautiful soup 通过以下代码从维基百科中抓取一些内容:
import requests
from bs4 import BeautifulSoup
import urllib.request, json
s = 'September%2011'
url = 'https://en.wikipedia.org/w/api.php?action=query&titles={0}&prop=revisions&rvprop=content&rvsection=1&format=xml&formatversion=2'.format(s)
r = requests.get(url)
print(r.status_code)
content = r.text
events = []
soup = BeautifulSoup(content, "lxml")
events = [events.text for events in soup.find_all("rev")]
print(events)
内容是发生在某一天的事件。在维基百科上,每个事件都显示为一个点,但从 API 中它显示为一个长列表:
我想将内容放入一个数据框中,每个事件都有一个单独的行,即每次有一个“\n*”。
我查看了一些重新列出拆分的答案,但不知道如何在这种情况下应用。
试试这个:
df = pd.DataFrame(events[0].split('\n*')[1:], columns=["Events"])
print(df)
Events
0 [[1185]] – [[Isaac II Angelos]] kills [[...
1 [[1226]] – The first recorded instance o...
2 [[1297]] – [[Battle of Stirling Bridge]]...
3 [[1390]] – [[Lithuanian Civil War (1389–...
...