Форум сайта python.su
Python 2.6
Немного не понимаю почему выдается такой индекс найденного фрагмента (1 : 21), причем строку берет правильно :
my.txt -utf8 кодировка
f=open('my.txt','r')
dict=f.read()
f.close()
print dict[0:50]
begin=0
end=0
begin=dict.find('{',end)+1
end=dict.find('}',begin)
print dict[begin:end],'|\t',begin,':',end
{регулярный}{выражение}{вик
регулярный | 1 : 21
Офлайн
А что хотелось?
Офлайн
Просто странно как то индексы х2, пофиг что unicode, перебираться же должны по буковкам,
1:10 вроде должно
Отредактировано (Ноя. 17, 2010 21:08:22)
Офлайн
MaDRuSнапиши входной файл без русских букв, будет тебе 1:10.
Просто странно как то индексы х2, пофиг что unicode, перебираться же должны по буковкам,
1:10 вроде должно
f=open('my.txt','r')
dict=f.read().decode('utf8')
f.close()
print dict[0:50]
begin=0
end=0
begin=dict.find(u'{',end)+1
end=dict.find(u'}',begin)
print dict[begin:end],u'|\t',begin,u':',end
Офлайн
MaDRuS
Повторяю (для вас, вероятно, впервые):
1. unicode != utf8
2. utf8, в отличие от юникода, работает с байтами
3. если ascii буквы в utf8 записываются в один байт, то для русских букв это неверно. Длина русской буквы в utf8 занимает два байта. Китайский иероглиф еще длинне.
4. если хотите работать с буквами, а не байтами - используйте unicode
Офлайн
Офлайн
Спасибо большое, понял все
Офлайн