问题内容
我想从 mwparserfromhell 库返回的 wiki 链接中提取数据。 例如,我想解析以下字符串:
[[file:warszawa, ul. freta 16 20170516 002.jpg|thumb|upright=1.18|[[maria skłodowska-curie museum|birthplace]] of marie curie, at 16 freta street, in [[warsaw]], [[poland]].]]
如果我使用字符 |
分割字符串,则它不起作用,因为图像描述中也有一个使用 |
的链接: [[玛丽亚·斯克沃多夫斯卡-居里博物馆|出生地]]
。
我使用正则表达式首先替换字符串中的所有链接,然后再拆分它。它可以工作(在本例中),但感觉不干净(参见下面的代码)。有没有更好的方法从这样的字符串中提取信息?
import re
wiki_code = "[[File:Warszawa, ul. Freta 16 20170516 002.jpg|thumb|upright=1.18|[[Maria Skłodowska-Curie Museum|Birthplace]] of Marie Curie, at 16 Freta Street, in [[Warsaw]], [[Poland]].]]"
# Remove [[File: at the begining of the string
prefix = "[[File:"
if (wiki_code.startswith(prefix)):
wiki_code = wiki_code[len(prefix):]
# Remove ]] at the end of the string
suffix = "]]"
if (wiki_code.endswith(suffix)):
wiki_code = wiki_code[:-len(suffix)]
# Replace links with their
link_pattern = re.compile(r'\[\[.*?\]\]')
matches = link_pattern.findall(wiki_code)
for match in matches:
content = match[2:-2]
arr = content.split("|")
label = arr[-1]
wiki_code = wiki_code.replace(match, label)
print(wiki_code.split("|"))
正确答案
.filter_wikilinks()
返回的链接是 wikilink
类,该类具有 title
和 text
属性。
title
返回链接的标题:file:warszawa, ul。弗雷塔16 20170516 002.jpg
text
返回链接的其余部分:thumb|upright=1.18|[[maria skłodowska-curie museum|birthplace]] 玛丽·居里 (marie curie),地址:16 freta street,[[华沙]],[[波兰]]。
这些返回为 wikicode
对象。
由于实际文本始终是最后一个片段,因此首先需要使用以下正则表达式查找其他片段:
([^\[\]|]*\|)+
(
)
: 组[^\[\]|]*
: 0 个或多个非方括号或竖线的字符\|
:文字管道
+
:1个或多个
从最后一个匹配的结束索引到字符串末尾的所有其他内容都是最后一个片段。
>>> import mwparserfromhell
>>> import re
>>> wikitext = mwparserfromhell.parse('[[File:Warszawa, ul. Freta 16 20170516 002.jpg|thumb|upright=1.18|[[Maria Skłodowska-Curie Museum|Birthplace]] of Marie Curie, at 16 Freta Street, in [[Warsaw]], [[Poland]].]]')
>>> image_link = wikitext.filter_wikilinks()[0]
>>> image_link
'[[File:Warszawa, ul. Freta 16 20170516 002.jpg|thumb|upright=1.18|[[Maria Skłodowska-Curie Museum|Birthplace]] of Marie Curie, at 16 Freta Street, in [[Warsaw]], [[Poland]].]]'
>>> image_link.title
'File:Warszawa, ul. Freta 16 20170516 002.jpg'
>>> text = str(image_link.text)
>>> text
'thumb|upright=1.18|[[Maria Skłodowska-Curie Museum|Birthplace]] of Marie Curie, at 16 Freta Street, in [[Warsaw]], [[Poland]].'
>>> other_fragments = re.match(r'([^\[\]|]*\|)+', text)
>>> other_fragments
>>> other_fragments.span(0)[1]
19
>>> text[19:]
'[[Maria Skłodowska-Curie Museum|Birthplace]] of Marie Curie, at 16 Freta Street, in [[Warsaw]], [[Poland]].'
以上就是如何从维基链接中提取数据?的详细内容,更多请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1142
183.71 KB下载数642
644.84 KB下载数2755
相关文章
发现更多好内容猜你喜欢
AI推送时光机如何从维基链接中提取数据?
后端开发2024-02-06
如何在 PHP 中从 JSON 中提取数据
后端开发2024-02-27
Python如何从PDF中提取元数据
后端开发2023-06-02
从未分组的接口中提取数据
后端开发2024-04-04
如何在 PHP 中从字符串中提取数字
后端开发2024-02-27
如何从json文件中读取数据
后端开发2023-09-13
python如何提取数据中的部分数据
后端开发2023-08-23
如何使用Python从字符串中提取数字?
后端开发2023-08-31
如何在oracle数据库中提取重要数据
后端开发2024-04-09
arcgis如何提取面中的点数据
后端开发2023-08-15
如何从gin中的前端获取数据?
后端开发2024-04-05
Angular Route中如何提前获取数据
后端开发2024-04-02
Django 如何从request中获取前端数据
后端开发2024-04-02
PHP如何从Redis缓存中获取数据
后端开发2024-05-06
如何将文本数据从HTML或其他格式中提取出来
后端开发2023-07-05
你是否知道如何使用JavaScript从PHP索引数组中提取数据?
后端开发2023-08-09
如何从零基础开始建立PHP数据库连接
后端开发2024-05-21
如何使用Excel函数从数列中提取实用信息
后端开发2024-04-17
c语言如何从文件中读取数据
后端开发2023-09-20
java中如何连接redis获取数据
后端开发2024-04-02
咦!没有更多了?去看看其它编程学习网 内容吧