2013-07-28 2 views
2

После первоначального поиска по этому вопросу я немного потерян.Как реализовать буфер Unicode в python

Я хочу использовать буферный объект для хранения последовательности кодов Юникода. Мне просто нужно сканировать и извлекать токены из указанной последовательности, поэтому в основном это буфер только для чтения, и нам нужна функциональность для продвижения указателя внутри буфера и для выделения подсегментов. Буферный объект должен, конечно, поддерживать обычные регулярные выражения и операции поиска по строкам.

Для этого может использоваться обычная строка Юникода, но проблема будет заключаться в создании копий подстроки для имитации продвижения указателя внутри буфера. Это кажется очень неэффективным esp для больших буферов, если только не существует обходного пути.

Я вижу, что есть объект Memoryview, который подходит, но он не поддерживает Unicode (?).

Что еще я могу использовать для обеспечения вышеуказанных функций? (В Py2 или Py3).

ответ

1

Это зависит от того, что именно необходимо, но обычно достаточно одной строки Unicode. Если вам нужно взять нехитрые фрагменты, вы можете сохранить их в виде 3-х кортежей (big unicode, start pos, end pos) или просто создать пользовательские объекты с этими 3 атрибутами и любым API-интерфейсом. Дело в том, что множество методов, таких как unicode.find() или объекты регулярного выражения search(), определяют начальную и конечную точки. Таким образом, вы можете делать самые простые вещи, не требуя, чтобы нарезать одну большую строку юникода.

+0

Спасибо. Это должно быть хорошо для моего случая, я надеюсь, что правильный буфер Unicode находится на чьей-то чертежной доске. –