Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 16, 2011 21:53:48

vmprog
От:
Зарегистрирован: 2011-09-22
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Как к переменной применить r' '

Здравствуйте.
Надо сравнить две строки. Проблема в том, что к tx не могу применить параметр r, чтобы экранировались все, что необходимо.

str_to_f = r'\xca\xee\xed\xf4\xe8\xe3\xf3\xf0\xe0\xf6\xe8\xff "\xc1\xf3\xf5\xe3\xe0\x...ff" \xf0\xe5\xe4. 2.0\xef\xf0\xe8\xff\xf2\xe8\xff" \xf0\xe5\xe4. 2.0'
if tx == str_to_f:
В отладчике:
str_to_f	'\\xca\\xee\\xed\\xf4\\xe8\\xe3\\xf3\\xf0\\xe0\\xf6\\xe8\\xff "\\xc1\\xf3...0\\xe5\\xe4. 2.0\\xef\\xf0\\xe8\\xff\\xf2\\xe8\\xff" \\xf0\\xe5\\xe4. 2.0'

tx '\xca\xee\xed\xf4\xe8\xe3\xf3\xf0\xe0\xf6\xe8\xff "\xc1\xf3\xf5\xe3\xe0\x...e5\xe4. 2.0 \xe1\xe0\xe7\xee\xe2\xe0\xff\xe4. 2.0 \xe1\xe0\xe7\xee\xe2\xe0\xff'
Пытался так:
r'%s' %tx
и так
tx.replace('\x','\\x')
Если str_to_f делаю без r' то вылезает ошибка.



Офлайн

#2 Окт. 16, 2011 22:34:36

truporez
От:
Зарегистрирован: 2009-05-08
Сообщения: 266
Репутация: +  6  -
Профиль   Адрес электронной почты  

Как к переменной применить r' '

Ошибка в вашей строке: \x… - это неверная escape последовательность. Потому без raw и не работает. Исправляйте.



Офлайн

#3 Окт. 17, 2011 09:33:49

vmprog
От:
Зарегистрирован: 2011-09-22
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Как к переменной применить r' '

В чем проблема мне понятно. Что делать то?
Как переменную tx в raw превратить?



Офлайн

#4 Окт. 17, 2011 11:24:18

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Как к переменной применить r' '

Я подозреваю, что ваш отладчик просто режет длинную строку вот в этом месте> \x… и поэтому показывает вам многоточие. Попробуйте таки узнать что там действительно в строке, потому как -x… не имеет смысла с точки зрения питона, после \x должно быть две hex цифры.

PS: Чего-то я торможу. Попробуйте “%r” % tx



Отредактировано (Окт. 17, 2011 11:28:20)

Офлайн

#5 Окт. 20, 2011 22:16:40

vmprog
От:
Зарегистрирован: 2011-09-22
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Как к переменной применить r' '

Помогите. На втором цикле строки визуально одинаковые, типы str, а if не срабатывает:(((((

# -*- coding: utf-8 -*-
import urllib2
import html5lib
import lxml.etree as etree
import codecs, sys
import platform
import re
import shelve

fileBan = r"c:\mydb.dat"
d = shelve.open(fileBan)

sock = urllib2.urlopen('http://downloads.1c.ru/release_info/categ_js.jsp?GroupID=88')
data = sock.read()
sock.close()

res = re.findall(r'<span class="prod">(.+?)</span>',data, re.DOTALL|re.MULTILINE)

str_to_f = "'\\xca\\xee\\xed\\xf4\\xe8\\xe3\\xf3\\xf0\\xe0\\xf6\\xe8\\xff &quot;\\xc1\\xf...\xf2\\xe8\\xff&quot; \\xf0\\xe5\\xe4. 2.0 \\xe1\\xe0\\xe7\\xee\\xe2\\xe0\\xff'"
id = 0;
for item in res:
tx = res[id]
tek_item = '%r' % item

if tek_item == str_to_f:
print '-------------------------'+item
#print item
id +=1

d.close() # close it



Офлайн

#6 Окт. 20, 2011 23:10:10

Fibio
От:
Зарегистрирован: 2010-09-14
Сообщения: 74
Репутация: +  2  -
Профиль   Отправить e-mail  

Как к переменной применить r' '

поробуйте без цикла написать if str_to_f in res: print ‘——————–’ str_to_f



Офлайн

#7 Окт. 20, 2011 23:38:07

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Как к переменной применить r' '

Вот с этим: \xf… и не сработает. Я же объяснял про многоточия.



Офлайн

#8 Окт. 20, 2011 23:40:30

Fibio
От:
Зарегистрирован: 2010-09-14
Сообщения: 74
Репутация: +  2  -
Профиль   Отправить e-mail  

Как к переменной применить r' '

можете написать print res сюда?



Офлайн

#9 Окт. 21, 2011 14:21:58

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Как к переменной применить r' '

1. str_to_f.decode('string_escape')
2a. tx.encode('string_escape')
2b. repr(tx)

> строки визуально одинаковые
:-)

import string

# ...

def simplify_text(text):
for c in unicode(string.whitespace + string.punctuation) + u'\xa0\xbb':
text = text.replace(c, u'')
return text.lower()

str_to_f = u'Конфигурация &quot;Бухгалтерия Предприятия&quot; ред. 2.0 базовая'
str_to_f = simplify_text(str_to_f)

# ...

if str_to_f == simplify_text(unicode(item)):
# ...

#...
..bw



Отредактировано (Окт. 21, 2011 14:39:08)

Офлайн

#10 Окт. 25, 2011 19:49:26

vmprog
От:
Зарегистрирован: 2011-09-22
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Как к переменной применить r' '

Большое всем спасибо.
Помог просмотр print res
Действительно при отладке мне показывались обрезанные строки.



Отредактировано (Окт. 25, 2011 19:49:47)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version