维基百科 API 在 headers 下获取文本
WIkipedia API get text under headers
我可以在维基百科中使用维基百科api
import wikipedia
import re
page = wikipedia.page("Albert Einstein")
text = page.content
regex_result = re.findall("==\s(.+?)\s==", text)
print(regex_result)
我可以从 regex_result(Wikipedia headers ) 中的每个元素中获取下面的文本并将其附加到另一个列表。我在网上查了一下,但我不知道如何使用维基百科中的某些功能来做到这一点 API。
第二次机会在获取文本中获取它,并使用某些模块在此处提取 headers 之间的文本:
我试过这个:
l = 0
for n in regex_result:
try:
regal = re.findall(f"==\s{regex_result[l]}\s==(.+?)\s=={regex_result[l+1]}\s==", text)
l+=2
except Exception:
continue
但我没有工作:
输出仅为 []
您不想调用 re
两次,而是直接遍历 regex_result
提供的结果。 Named groups 以 (?P<name>...)
的形式使提取 header 名称变得更加容易,而无需周围的标记。
import wikipedia
import re
page = wikipedia.page("Albert Einstein")
text = page.content
# using the number 2 for '=' means you can easily find sub-headers too by increasing the value
regex_result = re.findall("\n={2}\s(?P<header>.+?)\s={2}\n", text)
regex_result 将是所有 top-level 部分 header 的字符串列表。
这是我用来从 wiki 页面制作 table 内容的方法。 (注:f-strings需要Python3.6)
def get_wikiheader_regex(level):
'''The top wikiheader level has two = signs, so add 1 to the level to get the correct number.'''
assert isinstance(level, int) and level > -1
header_regex = f"^={{{level+1}}}\s(?P<section>.*?)\s={{{level+1}}}$"
return header_regex
def get_toc(raw_page, level=1):
'''For a single raw wiki page, return the level 1 section headers as a table of contents.'''
toc = []
header_regex = get_wikiheader_regex(level=level)
for line in raw_page.splitlines():
if line.startswith('=') and re.search(header_regex, line):
toc.append(re.search(header_regex, line).group('section'))
return toc
>>> get_toc(text)
我可以在维基百科中使用维基百科api
import wikipedia
import re
page = wikipedia.page("Albert Einstein")
text = page.content
regex_result = re.findall("==\s(.+?)\s==", text)
print(regex_result)
我可以从 regex_result(Wikipedia headers ) 中的每个元素中获取下面的文本并将其附加到另一个列表。我在网上查了一下,但我不知道如何使用维基百科中的某些功能来做到这一点 API。
第二次机会在获取文本中获取它,并使用某些模块在此处提取 headers 之间的文本:
我试过这个:
l = 0
for n in regex_result:
try:
regal = re.findall(f"==\s{regex_result[l]}\s==(.+?)\s=={regex_result[l+1]}\s==", text)
l+=2
except Exception:
continue
但我没有工作: 输出仅为 []
您不想调用 re
两次,而是直接遍历 regex_result
提供的结果。 Named groups 以 (?P<name>...)
的形式使提取 header 名称变得更加容易,而无需周围的标记。
import wikipedia
import re
page = wikipedia.page("Albert Einstein")
text = page.content
# using the number 2 for '=' means you can easily find sub-headers too by increasing the value
regex_result = re.findall("\n={2}\s(?P<header>.+?)\s={2}\n", text)
regex_result 将是所有 top-level 部分 header 的字符串列表。
这是我用来从 wiki 页面制作 table 内容的方法。 (注:f-strings需要Python3.6)
def get_wikiheader_regex(level):
'''The top wikiheader level has two = signs, so add 1 to the level to get the correct number.'''
assert isinstance(level, int) and level > -1
header_regex = f"^={{{level+1}}}\s(?P<section>.*?)\s={{{level+1}}}$"
return header_regex
def get_toc(raw_page, level=1):
'''For a single raw wiki page, return the level 1 section headers as a table of contents.'''
toc = []
header_regex = get_wikiheader_regex(level=level)
for line in raw_page.splitlines():
if line.startswith('=') and re.search(header_regex, line):
toc.append(re.search(header_regex, line).group('section'))
return toc
>>> get_toc(text)