1

我编写了以下程序来断开 ta.wikipedia 页面中的英文单词的链接。Delink 是指去掉英文单词前后的方括号。我是PAWS(pywikibot)的新手。似乎可以通过正则表达式(AZ,az)完成删除。如何?

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')

我认为这不是好的编码。所以我想使用正则表达式。我希望我满足了对 wikimedia 项目的需求。

换句话说,我只想删除英文单词的括号而不是英文单词。

4

1 回答 1

0

一些与 PCRE 兼容的正则表达式库可以根据其 Unicode 属性匹配字符类(例如\p{Latin}匹配拉丁脚本的任何字符),但 Python 的re模块不能。您可以使用其他 Python 模块(此答案有详细信息),但只要您只查找 ASCII 字符,构建自己的字符类就更容易:[A-Za-z]将匹配这些范围内的单个字符,并且re.sub('([A-Za-z])]]', '\\1', text)将保留该字符并丢弃括号。

于 2016-12-20T22:28:23.967 回答