Вывод ответа #1862317318

-

Ноу хау - от мастеров на заметку

Небольшие рецепты полезных решений

{autor_name}


{text_rank}
репутация: {repa}
{registration_date}
сообщений: {posts}
{tel_link}
#{postnumber_id}

Функция возвращает список позиций вхождения строки string в текст text.
Необязательные аргументы:
register=1 # учитывать регист букв
edge=1 # искать слово только "целиком" (если подстрока-часть слова в тексте, она не принимается)


def search(text, string, register=None, edge=None):
  if not register:text,string=text.lower(),string.lower()
  if edge:
    def ist(t):
      return t.isalpha()+t.isdigit()*2+t.isspace()*4
    ed1,ed2,len_string,len_text=ist(string[0]),ist(string[-1]),string.__len__(),text.__len__()  
  index,find=[],-1
  while 1:
    find=text.find(string,find+1)
    if find<0:break
    if edge and ((find>0 and ist(text[find-1])==ed1) or (find+len_string<len_text and ist(text[find+len_string])==ed2)):find+=1;continue      
    index.append(find)
  return index

search(u'Hello word, aga', u'Aga',0,1) # искать без учета регистра, слово целиком
-------------
добавлено в 01.00: Как скачать маленький файл на низком уровне, чтоб не сожрало из за него всю оперативу без urllib и httplib (если хотите, замените e32socket на socket или iapconnect):

#Retrieve.py,by Krust (24,12,2009)

def retrieve(url, path):
  host,url=url.split('/',1)
  #print host,url
  import e32socket,e32
  client=e32socket.socket(e32socket.AF_INET, e32socket.SOCK_STREAM,0,None)
  client.connect((e32socket.gethostbyname(host),80))
  print 'ok connect'
  client.send('GET /%s HTTP/1.0\r\nHost: %s\r\nUser-agent: Python\r\n\r\n'%(url, host))

  string=client.recv(1024).split('\r\n')
  for t in xrange(string.__len__()):
    if not string[t] or string[t].isspace():break
  print '\r\n'.join(string[:t+1]) # Header
  string=['\r\n'.join(string[t+1:])]
  while 1:
    e32.ao_yield()
    t=client.recv(1024)
    if not t:break
    string.append(t)
  import e32posix as ex
  f=ex.open(path,ex.O_RDWR|ex.O_TRUNC|ex.O_CREAT)
  ex.write(f,''.join(string))
  ex.close(f)
  print 'Done'

if __name__=='__main__':
  retrieve('python.org/images/python-logo.gif', 'c:\\logo_from_python_org.jpg')

это же в прикрепленном файле.

Прикрепленный файл #1: retrieve_by_krust_in_08012010230648_f.zip ( меньше 1кб)


ответ опубликован:
Рейтинг: 5
голосов: 2



Яндекс.Метрика