ホームページ >バックエンド開発 >Python チュートリアル >Wiki リンクからデータを抽出するにはどうすればよいですか?

Wiki リンクからデータを抽出するにはどうすればよいですか?

WBOY
WBOY転載
2024-02-05 23:12:081074ブラウズ

Wiki リンクからデータを抽出するにはどうすればよいですか?

質問内容

mwparserfromhell ライブラリから返される wiki リンクからデータを抽出したいと考えています。 たとえば、次の文字列を解析したいとします:

リーリー

文字 | を使用して文字列を分割しても、画像の説明に | を使用するリンクもあるため機能しません: [[Maria Skvo Dowska -キュリー博物館|出身地]]

正規表現を使用して、まず文字列内のすべてのリンクを置き換えてから、文字列を分割しました。 (この場合は) 機能しますが、クリーンな感じはしません (以下のコードを参照)。このような文字列から情報を抽出するより良い方法はありますか?

[[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]].]]

正解


.filter_wikilinks() 返されるリンクは wikilink クラスです, このクラスには、title プロパティと text プロパティがあります。

  • title リンクのタイトルを返します: file:warszawa, ul. Fretta16 20170516 002.jpg
  • text リンクの残りの部分に戻る: thumb|upright=1.18|[[マリア・スクウォドフスカ・キュリー博物館|生誕地]] マリー・キュリー、16 freta street 、[[ワルシャワ]] 、[[ポーランド]]。

これらは、wikicode オブジェクトとして返されます。

実際のテキストは常に最後のフラグメントであるため、最初に次の正規表現を使用して他のフラグメントを検索する必要があります:

([^\[\]|]*\|)

    ######(### ###)###: グループ
  • [^\[\]|]*: 角括弧または縦棒以外の 0 個以上の文字
    • \|:リテラルパイプ
    • : 1 つ以上の
  • 最後の一致の終了インデックスから文字列の末尾までのその他すべてが最後のフラグメントです。 リーリー

以上がWiki リンクからデータを抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。