Python 3 bytes.index: лучший способ?

Просто научился Python 3 через 7 дней, и у меня такое ощущение, что в моем понимании байтовых строк есть немного дыры. В Python 3 предположим, что у меня есть байтовая строка b'1234' . Его итератор возвращает целые числа:

 Python 3.2.3 (default, May 26 2012, 18:49:27) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> for z in b'1234': ... print(type(z)) ... <class 'int'> <class 'int'> <class 'int'> <class 'int'> 

Я могу найти целое число в байтовой строке (определение in состоит in том, что оно ищет равенство):

 >>> 0x32 in b'1234' True 

Однако я хотел бы найти индекс заданного целого числа в байтовой строке. bytes.index требует подстроку:

 >>> b'1234'.index(b'2') 1 

Теперь, если у меня есть переменная x которую я хочу найти, это лучшее, что я придумал:

 >>> x = 0x32 >>> b'1234'.index(bytes([x])) 1 

Я знаю, что Python более элегантен. Мне явно не хватает чего-то очевидного. Любые идеи относительно более простого способа сделать это, кроме создания последовательности одного целого? Или это действительно так?

2 Solutions collect form web for “Python 3 bytes.index: лучший способ?”

Да, это способ сделать это.

Это не сильно отличается от поиска символа в строке на основе его кодовой точки:

 x = 0x32 i ='1234'.index(chr(x)) 

Кроме того, взгляните на « Погружение в пик» Марка Пилгрима 3 , глава 4. Строки , раздел 4.6. Строки против байтов . Это прекрасно объясняет проблемы с более старыми строками Python 2.x (которые стали типом байтов в Python 3) и как принципиально отличается новая строка Python 3.

  • Наследование, когда __new __ () не возвращает экземпляр класса
  • Изменение значений списка namedtuples
  • "Tkinter TclError: плохой тип файла", используя askopenfilename
  • PEP8 - импортировать не поверх файла с sys.path
  • Переменная String как href в lxml.builder
  • Пример str.isdecimal () и str.isdigit ()
  • Virtualenv - Python 3 - Ubuntu 14.04 64 бит
  • Что такое переменные аннотации в Python 3.6?
  • Python - лучший язык программирования в мире.