2016-12-19 7 views
1

a ta.wikipedia pageに英語の単語をデリンクするための次のプログラムを書いた。 Delinkは英語の前後にある大括弧の除去を意味します。私はPAWS(pywikibot)を初めて使っています。削除は正規表現(A-Z、a-z)で行うことができるようです。どうやって?pywikibotの検索と置換モードのための英語の単語を見つける正規表現は

import pywikibot 
import re 

    site = pywikibot.Site('ta', 'wikipedia') 
    page = pywikibot.Page(site, title) 
    page.text = page.text.replace('[[Eudicots]]','Eudicots') 
    page.save() 

私の英語のために申し訳ありません。英語は私のためのブリッジ言語です。私はデバッグするよう求めていません。しかし、次のような繰り返しのコードは避けてください。 たとえば、次の26文字(アルファベット)のコードは[[かっこ]

page.text = page.text.replace('[[A','A') 
page.text = page.text.replace('[[B','B') 
page.text = page.text.replace('[[C','C') 
likewise, A to Z 
page.text = page.text.replace('[[X','X') 
page.text = page.text.replace('[[Y','Y') 
page.text = page.text.replace('[[Z','Z') 

次に、常に単語の末尾にある小文字を削除する必要があります。なぜなら、すべての単語は小文字で終わるからです。小文字を削除するには、次のコードを書く必要があります。

page.text = page.text.replace('a]]','a') 
    page.text = page.text.replace('b]]','b') 
    page.text = page.text.replace('c]]','c') 
    page.text = page.text.replace('d]]','d') 
    (likewise, for all the 26 English letters) 
    page.text = page.text.replace('x]]','x') 
    page.text = page.text.replace('y]]','y') 

これは良いコーディングではないと思います。だから私は正規表現を使用したい。 私はウィキメディアプロジェクトの必要性を提供してくれることを願っています。

つまり、英語の単語ではなく、英語の単語の括弧を削除したいと考えています。

答えて

0

一部のPCRE互換正規表現ライブラリは、Unicodeプロパティに基づいて文字クラスを一致させることができます(\p{Latin}はLatinスクリプトの任意の文字と一致します)。ただし、Pythonのモジュールは一致しません。代わりに(this answerに詳細がある)他のPythonモジュールがありますが、ASCII文字のみを探している限り、独自の文字クラスを作成する方が簡単です:[A-Za-z]はその範囲内の1文字に一致し、re.sub('([A-Za-z])]]', '\\1', text)その文字を保持して大括弧を破棄します。

+0

ただし、]]はブラケットだけを削除します。 [https://ta.wikipedia.org/w/index.php?title=%E0%AA%AA%E0%AE%AF%E0%AE%A9%E0%AE%B0%E0%AF%8Dを参照してください。 %3AInfo-farmer%2FPAWS&type = revision&diff = 2156707&oldid = 2156706 page = pywikibot.Page(site、title) page.text = re.sub( '([A-Za-z])]]'、 '\\ 1 '、page.text) page.save() –

+0

また、インターウィキリンクの例のブラケットを削除してはいけません。[[:en:Parkia speciosa]] –

+1

私はそれを呼び出しに結合するのが難しくないと確信しています: )あなたが単一の正規表現でそれらを望むなら、 '(\ [\ [|]])(?![A-Za-z])'のようなものが動作します。 interwikisを免除することは正規表現が良いツールではないことです。あなたはコールバックで 're.sub'を試すことができますが、おそらく[mwparserfromhell](https://github.com/earwig/mwparserfromhell)のようなものを使う方が良いでしょう。 – Tgr

関連する問題