Python 3 делает четкое различие между raw newLinePos = [ m . start () для m в re . finditer ( b ' n' , content )] и строка utf-8. возвращает число, возможно 0-255 - байт, и вы пытаетесь сопоставить его с строкой . Я согласен, возможно, можно сделать преобразование, но Python строго типизирован, так что это всегда будет терпеть неудачу, независимо от того, какой символ представляет целое. Чтобы получить номер, соответствующий использованию:
byte
>>> lines = ['foo', 'ba
r', 'baz', 'quux']
>>> content = '
'.join(lines).encode('utf-8')
>>> content
b'foo
ba
r
baz
quux'
>>> pattern = b'(?<!
)
'
>>> newLinePos = [m.start() for m in re.finditer(pattern, content)]
>>> newLinePos
[7]
>>> content[5:8]
b'ba
'
и аналогичным образом используйте строку содержимого для вашего поколения итератора:
bytes