Python中字串的解壓縮,python字串
今天在用Streaming-Python處理一個MapReduce程式時,發現reducer失敗,原因為耗費記憶體達到極限了!仔細查看代碼時,發現有一個集合裡儲存著URL,而URL長度是比較長的,直接儲存確實是耗費記憶體,於是想到用壓縮儲存,然後用的時候再解壓,雖然處理時間增加,但是耗費記憶體大大降低!
具體就是使用zlib模組
import zlib raw_data = "hello,world,ooooooooooooxxxxxxxxxxx"zb_data = zlib.compress(raw_data) print "len(raw_data)=%d, len(zb_data)=%d, compression ratio=%.2f"\ % (len(raw_data), len(zb_data), float(len(zb_data))/len(raw_data)) # len(raw_data)=35, len(zb_data)=25, compression ratio=0.71raw_data2 = zlib.decompress(zb_data)print raw_data2
參考:http://my.oschina.net/1123581321/blog/176570
Python字串中的'\'輸入
反斜線 是 “轉意符" -- 改變後面字元的含義, 比如:
\r : 斷行符號, \n : 換行, \t : 定位字元 ..
為了表達字元"反斜線(\)" 需要在其前面在加一個反斜線 : \\
就是說,你看到的字串中的 \\ 就是一個 "\".
另:你可以用os.path.join("C:", *dirs)來完成這種路徑字串的串連。
字串解壓縮
剛才編成了壓縮的程式,不好意思,現在的可以解壓了。
程式沒有給你編寫讀寫檔案的內容,檔案讀寫自已去編,那個相對就簡單了,程式只介紹了實現準系統的內容。你可以輸入3A4B7D測試。
void main()
{int m=0;int j=0;
//string a;
//char c[111];
char a[111];
char b[111];
scanf("%s",a);
for(int i=0;a[i]!='\0';i++)
{ cout<<"a"<<endl;
if(a[i]-'0'>1&&a[i]-'0'<9)
{ m=a[i]-'0';}
else{b[j]=a[i];j++;}
while(m>1)
{
b[j]=a[i+1];
j++;
m--;
}
}
cout<<j<<endl;
b[j]='\0';
cout<<b<<endl;
system("pause");
}