in-place? Я пробовал использовать ctypes:
                  
                  
                      newstr = 'hello world'
                  
                  
                      dest = POINTER(c_char)(c_char.from_address(addressof(ctypes.c_wchar_p(newstr))))
                  
                  
                      source = POINTER(c_char)(c_char.from_address(addressof(ctypes.c_wchar_p(newstr)) + 1))
                  
                  
                              ctypes.memmove(
                  
                  
                                  dest,
                  
                  
                                  source,
                  
                  
                                  length - 1,
                  
                  
                              )
                  
                  
                  
                  
                  
                  Но это только работает если сконвертировать newstr сначала в bytes, и потом кастовать в c_char_p, что приводит к копированию строки. Можно ли это сделать без копирования?
                  
                  
                  
                  
                  
                  Нужно мне это потому что я обрабатываю большую строку (100MB+) и хочу из неё убрать все extra whitespaces, т.е.:
                  
                  
                  
                  
                  
                  >> a = '  hello   world'
                  
                  
                  >> a = remove_extra_whitespaces(a)
                  
                  
                  >> a == 'hello world'
                  
                  
                  True
                  
                  
                  
                  
                  
                  Делать копию очень дорого
                  
                  
                
возможно тебе нужен bytearray
я пробовал кастить строку в bytearray, и он тоже копирует
Обсуждают сегодня