コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

Help:Pywikipediabot/replace.py/使い方

使い方の解説。このページではreplace.pyの具体的な使い方について説明します。

使い方

[編集]
python replace.py [global-argument] [local-argument] "検索する文字列" "置換する文字列"
  • python replace.py
あまり深く考える必要はありません。スクリプトを実行するときはこのようにする必要があるとだけ覚えてください。
  • [global-argument]
これはPywikipediabot/Global_Optionsにあるものの中から選びます。
  • [local-argument]
Pywikipediabot/replace.pyにあるものの中から選びます。
  • 検索する文字列、置換する文字列
これらは前述のように"で囲む必要があります。これらの文字列置換に正規表現を用いることもできますが、それはとりあえず置いておきましょう。

これがreplace.pyの基本的な文法です。一つ注意してもらいたいのは、文字列を"で囲む必要があるという事です。これは引数に文字列を指定したときも同じです[1]。囲まないと、スペースが入っていた時などに、誤認識される可能性があるので、気をつけてください。


引数

[編集]

必須引数

[編集]

これらは基本的に必要な引数です。使用例はページの下の方を見てください。

処理対象のページを指定する
replace.pyは処理対象のページを指定しない、つまりすべてのページに処理を行うといったことはできません。仮にできるとしても、そんな置換を行うべきではありません。
ですから、処理対象を指定する必要があります。下によく使用される引数を示します。詳しいことは引数一覧を見てください。
  • -ref:XX
XXというページにリンクしているページを処理対象に加えます。特別:リンク元/XXと同じような意味を持ちます。
  • -page:XX
XXというページを直接処理対象に加えます。この引数は複数回使用できます。
  • -cat:XX
XXというカテゴリに含まれているページを処理対象に加えます。
処理する名前空間を指定する
基本的に名前空間を指定せずにbotを動作させてはいけません。ノートやWikipediaなどの空間に編集が加えられると、大きな混乱を起こすおそれがあります。ですから、次の引数を使ってください。
  • -namespace:X
XにはHelp:名前空間に書いてある数字を指定します。複数の名前空間を指定することもできます。その場合は数字を半角カンマで区切ってください。
要約欄
要約欄に編集の意図を明確に示すようにしましょう(WP:ES)。議論に基づき大きな変更を施したとき、議論の場所を明らかにしていなければ、他の人は荒らしだと思うかもしれません。なお、要約を指定しなければ、botは置き換えた動作そのままを書きます(参考)。
  • -summary:"XX"
XXが指定する文字列です。通常の要約欄と同じように、内部リンクなどを用いることができます。なお、入力の制限に従う必要があります。

補助引数

[編集]

よく使用する物を示します。

  • -pt:XX
これはグローバル引数の一つで、編集の速度を規定します。botを準備するときに、user-config.pyで既に規定されているとは思いますが、これを使うことで簡単に再定義を行えます。編集が多いときは速度を抑える必要がありますから、これを使うことはよくあるでしょう。
  • -always
これを指定すれば毎回の編集を確認するプロンプトを表示しません。すべてが自動で行われるため、botフラグがないときはこれの使用は控えるべきでしょう。
指定しなければ、下の文字列が毎回表示されます。
Do you want to accept these changes? ([y]es, [N]o, [e]dit, open in [b]rowser, [a]ll, [q]uit)

正規表現

[編集]

使用例

[編集]
python replace.py -page:"利用者:赤の旋律/テスト" 1 2
利用者:赤の旋律/テストというページに対して1を2に変える。
結果 - [2]
python replace.py -prefixindex:"利用者:赤の旋律/テスト" "赤の旋律" "赤い旋律"
「利用者:赤の旋律/テスト」から始まるページ([3])に対して「赤の旋律」を「赤い旋律」に変える。
結果 - [4][5]
python replace.py "-pt:10" "-namespace:0" "-ref:コロムビアミュージックエンタテインメント" "-summary:[[WP:BOTREQ#日本コロムビア社名変更に伴うリンクおよびカテゴリの修正依頼]]"
 "[[コロムビアミュージックエンタテインメント|日本コロムビア]]" "[[日本コロムビア]]" "-always"
コロムビアミュージックエンタテインメントにリンクしているページのなかで標準名前空間にある記事に、bot作業依頼に基づく修正だということを示しながら日本コロムビア日本コロムビアという置換を行う。
結果 - [6]

正規表現

[編集]
python replace.py "-page:利用者:赤の旋律/テスト" "-regex" "\[\[(19[6-9][0-9]|20[01][0-9])年全豪オープンテニス" "[[\1年全豪オープン"
1960-2019年[2]の全豪オープンテニス大会について、年を維持したまま全豪オープンへとリンク修正を行う。
結果 - [7]
python replace.py -page:"利用者:赤の旋律/テスト" -regex "\[\[(.+?競技)\s\([夏|冬]季オリンピック\)\|(.+?\]\])" "[[オリンピックにおける\1|\2"
[[X競技 (夏期オリンピック)|Y]]もしくは[[X競技 (冬期オリンピック)|Y]]を[[オリンピックにおけるX競技|Y]]に置換する。
結果 - [8]
python replace.py "-regex" "-transcludes:Fed Cup" "\*\s\{\{Fed\sCup\|([0-9]+?)\|([^}]+?)\}\}(.+)" "* {{Fed Cup|\1|\2}}\3\n* {{ITF|w|\1|\2}}" "-always" "-excepttext:\{\{[iI]TF\|"
{{Fed Cup}}があるページに対して、{{ITF}}を加える。引数は全く同じ物、改行には制御文字を使用。テンプレートの重複を避けるため、"-excepttext:"引数を用いて"{{ITFと{{iTFを除外[3]
結果 - [9]
python replace.py -regex -nocase -excepttext:"^#(?:転送|REDIRECT)" -page:"Wikipedia:サンドボックス" -page:"Wikipedia:Sandbox" -summary:"test" "書き込んで" "書きこんで"
対象となるページからリダイレクトを除外した上で置換する。

脚注

[編集]
  1. ^ 引数の場合、"-引数名:文字列"という書き方もできます。
  2. ^ 1960-1967年と2012-19年の全豪オープンテニス大会というリンクはなかったため、実際には1968-2011年までの修正を行っている。明確に指定するのであれば、年部分を(196[89]|19[7-9][0-9]|200[0-9]|201[01])のようにすればよい([1])。また、今回は誤編集防止のために年部分までいれて変換をおこなったが、そのようなことが起こらないように確認を事前にすませれば、直接「オープンテニス→オープン」等の編集を行なっても良い。
  3. ^ ページの先頭は自動で大文字に変換されることに注意。