При переходе через одну из проблем в Python Challenge, я пытаюсь решить следующим образом:Поиск и захватывая символ с использованием регулярных выражений Python
Читать ввод в текстовом файле с символами следующим образом:
DQheAbsaMLjTmAOKmNsLziVMenFxQdATQIjItwtyCHyeMwQTNxbbLXWZnGmDqHhXnLHfEyvzxMhSXzd
BEBaxeaPgQPttvqRvxHPEOUtIsttPDeeuGFgmDkKQcEYjuSuiGROGfYpzkQgvcCDBKrcYwHFlvPzDMEk
MyuPxvGtgSvWgrybKOnbEGhqHUXHhnyjFwSfTfaiWtAOMBZEScsOSumwPssjCPlLbLsPIGffDLpZzMKz
jarrjufhgxdrzywWosrblPRasvRUpZLaUbtDHGZQtvZOvHeVSTBHpitDllUljVvWrwvhpnVzeWVYhMPs
kMVcdeHzFZxTWocGvaKhhcnozRSbWsIEhpeNfJaRjLwWCvKfTLhuVsJczIYFPCyrOJxOPkXhVuCqCUgE
luwLBCmqPwDvUPuBRrJZhfEXHXSBvljqJVVfEGRUWRSHPeKUJCpMpIsrV.......
Что мне нужно, это пройти через этот текстовый файл и выбрать все строчные буквы, которые заключены только с тремя прописными буквами на каждой стороне.
Питона сценарий, который я написал, чтобы сделать выше выглядит следующим образом:
import re
pattern = re.compile("[a-z][A-Z]{3}([a-z])[A-Z]{3}[a-z]")
f = open('/Users/Dev/Sometext.txt','r')
for line in f:
result = pattern.search(line)
if result:
print result.groups()
f.close()
выше данный сценарий, вместо возвращения захвата (список строчных букв), возвращает все текстовые блоки, которые встречают критерии регулярного выражения, такие как
aXCSdFGHj
vCDFeTYHa
nHJUiKJHo
.........
.........
Может кто-нибудь сказать мне, что именно я делаю неправильно здесь? И вместо того, чтобы перебирать весь файл, существует ли альтернативный способ запуска поиска регулярных выражений по всему файлу?
Благодаря
Спасибо за разъяснение. Я предполагаю, что urllib.urlopen ("http://www.pythonchallenge.com/pc/def/equality.html") .read() читает весь HTML в строку. Есть ли способ разбить его, чтобы вместо чтения всего HTML за один раз мы могли оптимизировать его, разбив его на более мелкие куски? –
@sc_ray urllib.urlopen возвращает файл-подобный объект, поэтому вы можете читать строки за строкой, если хотите. –
@sc_ray Хотя чтение строк за строкой может быть более эффективным, вы, вероятно, не заметите разницу в скорости и увеличении потребления памяти (но, конечно, вы должны знать об этом). – helpermethod