Используя python C API, возможно ли уменьшить объект PyUnicode?

#python #python-3.x #python-c-api

#python #python-3.x #python-c-api

Вопрос:

Я не могу легко узнать точный размер строки, которую я создам. Я знаю только верхнюю границу, которая должна быть в пределах 1-2 символов от конечного размера. Как мне уменьшить строку после ее заполнения?

Комментарии:

1. Вы этого не делаете. В C вы могли бы использовать realloc , но python не предоставляет подпрограммы микроуправления памятью. Реальный вопрос в том, почему вас все равно волнует несколько байтов?

2. Также python выполняет некоторое интернирование для небольших строк, поэтому то, что вы хотите сделать, может на самом деле использовать больше памяти.

3. @Claris ‘asdf’ != ‘asdf 0 0’

Ответ №1:

На основе вашего комментария:

  1. Если вы пытаетесь удалить символы из своей строки, используйте метод .strip().
  2. Если вы хотите, чтобы количество байтов строки сравнивалось с количеством символов, вам нужно изменить кодировку.
  3. Если вы просто пытаетесь удалить символ , используйте метод .replace() .

Комментарии:

1. Я знаю, что я сделаю не более 1005 символов ASCII. Я выделяю строку ASCII из 1005 символов. Я заполняю 1003 символа. Как мне сделать строку длиной 1003 символа без перераспределения?