 |
|

13.12.2009, 14:19
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.05.2008
Сообщений: 756
С нами:
9456866
Репутация:
979
|
|
Кодировка в python больная тема 
|
|
|

13.12.2009, 14:48
|
|
Познающий
Регистрация: 30.11.2009
Сообщений: 97
С нами:
8655837
Репутация:
80
|
|
rushter, никакая она не больная  тыкни пальцем, где питон делает что-то не так, как надо.
2 [Dezzter], http://docs.python.org/library/re.html#re.S
|
|
|

13.12.2009, 14:50
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.05.2008
Сообщений: 756
С нами:
9456866
Репутация:
979
|
|
Сообщение от whexp
rushter, никакая она не больная  тыкни пальцем, где питон делает что-то не так, как надо.
2 [Dezzter], http://docs.python.org/library/re.html#re.S
Да всё так делает,просто постоянно надо использовать encode/decode
|
|
|

13.12.2009, 14:51
|
|
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
С нами:
9427413
Репутация:
973
|
|
Сообщение от [Dezzter]
PHP код:
import re
import urllib2
url = urllib2.urlopen('http://site.ru/test.php')
url=url.read()
match=re.findall('<!-- test -->[ \r\t].*?<!-- test2 -->', url)
match=str(match)[2:-2]
print match
Проблема вот в чём, если HTML страница вот такого вида:
Код HTML:
<!-- test --> Сдесь какой-то текст <!-- test2-->
То всё парсится отлично, а вот если уже вот такого:
Код HTML:
<br><br><br>
<center> Первая строка </center>
<center> Вторая строка </center>
<!-- test -->
<br>
<center> Пляске </center>
<br>
<!-- test2 -->
<center> Третья строка </center>
<center> Четвёртая строка </center>
Тогда ни чего не парсится
Я так понял, что re.findall парсит только строку.. а у меня во втором примере, нужно уже спарсить несколько строк
Как решить эту проблему? Чёт питоновскую документацию полистал и не смог сам раздуплиться =/
re.DOTALL, re.MULTILINE
Но будет проц грузить...
|
|
|

13.12.2009, 14:57
|
|
Участник форума
Регистрация: 25.03.2009
Сообщений: 149
С нами:
9015797
Репутация:
116
|
|
Я только начал учить питон, так что если люди, которые смогут помогать, подсказывать? Если чего напишите аську.
|
|
|

13.12.2009, 14:57
|
|
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
С нами:
9427413
Репутация:
973
|
|
Сообщение от *uNkN0Wn*
login999 после 1-го сообщения больше не отправляет. И еще с кодировкой проблема.
Вообще-то , это чисто учебный пример, и писался он от нехер делать, и сначала писался для граббы...Просто так.И он работал... Единственное где там могут быть траблы с кодировками - это на кнопках.И мне на него, если честно так пофику было то...
P.S. Поправил
|
|
|

13.12.2009, 15:02
|
|
Познающий
Регистрация: 30.11.2009
Сообщений: 97
С нами:
8655837
Репутация:
80
|
|
2rushter, ну просто win-консоль использует cp866, сайты вообще используют кто utf-8, кто cp1251, кто koi8-r. поэтому и приходится перекодировать.
|
|
|

13.12.2009, 15:59
|
|
Участник форума
Регистрация: 27.04.2009
Сообщений: 189
С нами:
8968720
Репутация:
69
|
|
Код:
from numpy import *
from math import *
b1 = b2 = b3 = b4 = 1
ex = matrix('75,33,75;68,15,68;39,9,39;16,25,16;58,48,58;53,5,53;61,63,61;47,72,47;99,29,99;33,17,33;97,80,97;29,61,29;16,23,16;13,32,13;72,77,72;43,67,43;84,34,84;100,13,100;81,13,81;63,11,63')
Y = [0.00077385, 0.00042372, 8.8133, 4.5851, 9,4883, 0.0011336, 0.0011336, 0.10767, 0.43098, 0.80050, 0.00061111, 0.0031792, 44.0359, 0.01448, 0.0075917, 0.00026723, 0.000036466, 0.000095717, 0.000047435, 24.336]
m=20
n=4
eps=0.00001
X = zeros([m,n])
E = zeros([m,1])
B = zeros([n,1])
A = zeros([n,n])
bb1=bb2=bb3=bb4=k=0
while not ((abs((b1-bb1)/b1)<eps) and (abs((b2-bb2)/b2)<eps) and (abs((b3-bb3)/b3)<eps) and (abs((b4-bb4)/b4)<eps)):
k=k+1
print 'iteracya nomer', k
print ''
for element in range(0,m):
n1 = sin(b4*ex[element,2])*((b1+b2*ex[element,0]**2+cos(b3*ex[element,1])))**(sin(b4*ex[element,2])-1)
n2 = (sin(b4*ex[element,2])*((b1+b2*ex[element,0]**2+cos(b3*ex[element,1])))**(sin(b4*ex[element,2])-1))*ex[element,0]**2
n3 = (sin(b4*ex[element,2])*((b1+b2*ex[element,0]**2+cos(b3*ex[element,1])))**(sin(b4*ex[element,2])-1))*(-sin(b3*ex[element,2])*ex[element,2])
n4 = (sin(b4*ex[element,2])*((b1+b2*ex[element,0]**2+cos(b3*ex[element,1])))**(sin(b4*ex[element,2])))*log(b1+b2*ex[element,0]**2+cos(b3*ex[element,1]))*cos(ex[element,2]*b4)*ex[element,2]
X[element,0] = n1
X[element,1] = n2
X[element,2] = n3
X[element,3] = n4
E[element,0] = Y[element]-(b1+b2*ex[element,0]**2+cos(b3*ex[element,1]))**sin(b4*ex[element,2])
print 'matrix X:'
print X
A = dot(X.T,X)
A = linalg.inv(A)
Z = dot(X.T,E)
B = dot(A,Z)
print 'matrix B:'
print B
bb1=b1
bb2=b2
bb3=b3
bb4=b4
b1=b1+B[0]
b2=b2+B[1]
b3=b3+B[2]
b4=b4+B[3]
print b1,b2,b3,b4,k
трабла: на 3ей итерации: ValueError: math domain error...
wtf?!
|
|
|

13.12.2009, 19:07
|
|
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
С нами:
9427413
Репутация:
973
|
|
2 TRX.new
лично я - хз...
|
|
|

13.12.2009, 19:46
|
|
Постоянный
Регистрация: 06.06.2007
Сообщений: 575
С нами:
9963746
Репутация:
180
|
|
Есть текст, одной строкой, вот кусок из него
idden\" name=\"fid\" id=\"fid\" value=\"9410924\" \/>\n <input type=\"hidden\" name=\"hash\" id=\"hash\" value=\"1260718814_aa0256f3b89294f28b\" \/>\n <input type=\"hidden\" name=\"cats\" id=\"privacy_cats\" \/>\n <input type=\"hi
мне нужно из него получить значение hash'a 1260718814_aa0256f3b89294f28b
Делаю так
print re.findall(r'id=\"hash\" value=\"(.*?)\"',data.read())
ничего ненаходит. Ну собсна я и неждал что это чтото найдет ибо это ваще какаято черная магия, пытался найти описание функции на русском, нихрена ненашол. Только посты на разных форумах, из чего примерно слепил свои параметры, но увы
PS. вот такой черной магие решил задачу
hash = re.findall(r'id=."hash."\svalue=."(.*?)."', data)[0]
Последний раз редактировалось cupper; 13.12.2009 в 20:31..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|