Что такое регулярное выражение, чтобы найти любые английские слова для поиска и замены режима Pywikibot

Я написал следующую программу, чтобы отделить английские слова на странице 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')

Я думаю, что это не очень хорошее кодирование. Поэтому я хочу использовать регулярные выражения. Я надеюсь, что я представил необходимость проекта Викимедиа.

Другими словами, я хочу удалить скобки английского слова, но не английские слова.

1 ответ

Решение

Некоторые PCRE-совместимые библиотеки регулярных выражений могут соответствовать символьным классам на основе их свойств Unicode (например, \p{Latin} будет соответствовать любому символу латинского алфавита), но Python re Модуль не. Есть и другие модули Python, которые вы могли бы использовать вместо этого ( этот ответ содержит подробности), но пока вы ищете только символы ASCII, проще создать свой собственный класс символов: [A-Za-z] будет соответствовать одному символу, который находится в этих диапазонах, и re.sub('([A-Za-z])]]', '\\1', text) сохранит этого персонажа и откажется от скобок.

Другие вопросы по тегам