apply
- удобный инструмент для применения простой функции ко всем строкам кадра данных. Здесь вы можете объединить столбцы с пробелом и заменить любое количество пробелов одним. Код может быть:
import re
blanks = re.compile(' +')
df['D'] = df.apply(lambda x: blanks.sub(' ', ' '.join(x)), axis=1)
df
станет, как ожидалось:
A B C D
0 hi dear hi dear
Простое открытие ofstream в двоичном режиме не меняет способ работы операторов << - они всегда будут выполнять форматированный вывод. Вам нужно использовать функцию потока write (), которая выполняет неформатированный вывод.
Решение:
FILE * pFile; // NEW
pFile = fopen("file.bin", "w+b"); // NEW
if (bResults)
do
{
// Check for available data.
dwSize = 0;
if (!WinHttpQueryDataAvailable( hRequest, &dwSize))
printf( "Error %u in WinHttpQueryDataAvailable.\n",
GetLastError());
// Allocate space for the buffer.
pszOutBuffer = new char[dwSize+1];
if (!pszOutBuffer)
{
printf("Out of memory\n");
dwSize=0;
}
else
{
// Read the Data.
ZeroMemory(pszOutBuffer, dwSize+1);
if (!WinHttpReadData( hRequest, (LPVOID)pszOutBuffer,
dwSize, &dwDownloaded))
{
printf( "Error %u in WinHttpReadData.\n",
GetLastError());
}
else
{
printf("%s", pszOutBuffer);
fwrite(pszOutBuffer, (size_t)dwDownloaded, (size_t)1, pFile); // NEW
}
// Free the memory allocated to the buffer.
delete [] pszOutBuffer;
}
} while (dwSize>0);
fclose (pFile); // NEW