Уведомления

Группа в Telegram: @pythonsu

#1 Июль 5, 2012 12:05:33

Radzhab
Зарегистрирован: 2012-07-05
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Изменить значения в List

    url = 'http://www.xxx.ru/'
    req = request.Request(url)
    req.add_header('User-Agent','Mozilla/5.0 (compatible; MSIE 6.1; WindowsNT)')
    f = request.urlopen(req).read()
    res = f
    lp = str(res)
    m = re.findall("page=\d*",lp)

// в общем никак не могу изменить элементы кортежа m. Чтобы кроме цифр ниче не осталось в m. C регулярками не предлагать. Как через цикл for сделать ?

Офлайн

#2 Июль 5, 2012 12:23:06

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Изменить значения в List

Radzhab
    url = 'http://www.xxx.ru/'
    req = request.Request(url)
    req.add_header('User-Agent','Mozilla/5.0 (compatible; MSIE 6.1; WindowsNT)')
    f = request.urlopen(req).read()
    res = f
    lp = str(res)
    m = re.findall("page=\d*",lp)

// в общем никак не могу изменить элементы кортежа m. Чтобы кроме цифр ниче не осталось в m. C регулярками не предлагать. Как через цикл for сделать ?

# -*- coding:utf-8 -*-
from urllib2 import *
url = 'http://python.su/forum/topic/14827/?page=2'
req = Request(url)
req.add_header('User-Agent','Mozilla/5.0 (compatible; MSIE 6.1; WindowsNT)')
f = urlopen(req).read()
res = f
lp = str(res)
m = re.findall("page=\d*",lp)
print m 
>>> ['page=1', 'page=1', 'page=1', 'page=1']
Что должно получиться то?



Офлайн

#3 Июль 5, 2012 12:29:42

Radzhab
Зарегистрирован: 2012-07-05
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Изменить значения в List

FishHook я просто хочу отсечь “page=” и оставить тока цифры. Приведу примерный код на c#

for (int i=0; i<list.count; i++)
{
   list[i]= string.replace("page=","") // Заменяю "page="  на пустоту. 
}

Офлайн

#4 Июль 5, 2012 12:58:45

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Изменить значения в List

m = [x.group(1) for x in re.finditer("page=(\d)*", lp)]



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#5 Июль 5, 2012 13:01:21

Radzhab
Зарегистрирован: 2012-07-05
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Изменить значения в List

PooH пипец) это случаем не LINQ?

Офлайн

#6 Июль 5, 2012 13:06:59

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Изменить значения в List

Radzhab
FishHook я просто хочу отсечь “page=” и оставить тока цифры. Приведу примерный код на c#

for (int i=0; i<list.count; i++)
{
   list[i]= string.replace("page=","") // Заменяю "page="  на пустоту. 
}
А, понятно, если без регекспов то тоже весьма просто

m=[int(i.replace('page=','')) for i in m]



Офлайн

#7 Июль 5, 2012 13:13:38

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Изменить значения в List

Radzhab
PooH пипец) это случаем не LINQ?
Это List Comprehensions и выделение группы цифр в регулярке



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#8 Июль 5, 2012 21:53:11

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Изменить значения в List

Radzhab
PooH пипец) это случаем не LINQ?
Это списковые выражения, которые, как и линк, представляют из себя функциональное программирование. Кстати, синтаксис списковых выражений в питоне с функциями мне больше нравится, чем в linq с методами.

Офлайн

#9 Июль 6, 2012 07:17:12

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Изменить значения в List

>>> import re
>>> s = ' abcd page=10 defg page=20 hijk '
>>> re.findall(r'page=(\d+)', s)
['10', '20']
>>>



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version