Что такое регулярное выражение, чтобы найти любые английские слова для поиска и замены режима 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)
сохранит этого персонажа и откажется от скобок.