Python讀取檔案資料

來源:互聯網
上載者:User

標籤:

1題目要求:

  文字檔有這些資料,需要的只有其中的5個屬性,如下顏色標記

  像以下的資料達到75萬組:

1product/productId: B0000UIXZ4 2product/title: Timex Link USB Watch3product/price: unknown 4review/userId: A14MVG2I9PS6NZ5review/profileName: B. Kuiper "Wah"6review/helpfulness: 0/07review/score: 5.08review/time: 12750912009review/summary: Best geek weapon ever...but no longer made?10review/text: This watch serves as my brain and now, my brain is no lo

2基於Python進行粗略讀取

  代碼如下:沒有對輸出進行處理,只是簡單篩選

  fo.write();寫入檔案的的時候注意的地方:3.X與2.X的寫入檔案的類型不同

寫入錯誤:TypeError: a bytes-like object is required, not ‘str‘-------------------------------------------------------------btest.decode(‘utf-8‘)    #結果‘abcde‘strtest.encode(‘utf-8‘)    #結果b‘abc‘

  

need = [‘product/productId:‘,‘product/price:‘,‘review/helpfulness:‘,‘review/score:‘,‘review/time:‘]fo = open("C:\\Users\\Five\\Desktop\\建立檔案夾\\python2.txt", "wb")for line in open("C:\\Users\\Five\\Desktop\\建立檔案夾\\Watches.txt"):flag = 0;for i in range(0,5):if line.find(need[i])==0:flag =1;break;if flag==1:fo.write((line+‘ ‘).encode(‘utf-8‘));fo.close();

  讀取檔案的方式有以下:

f = open("foo.txt")             # 返回一個檔案對象  line = f.readline()             # 調用檔案的 readline()方法  while line:     ....    line = f.readline() ----------------------------------------------------for line in open("foo.txt"):  ----------------------------------------------------f = open("c:\\1.txt","r")  lines = f.readlines()#讀取全部內容  for line in lines      print line  

3基於C語言的詳細讀取

  讀取並處理的結果如下:

  預備知識讀取的方式

  fp=fopen("python.txt","r");  fscanf(fp,"%s",&s);  printf("%s\n",s);裡面是按空格分開來讀取的。 下面是按行讀取的--------------------------------------  fgets(s,1028*8,fp);fgets(s,1028*8,fp)讀取的長度比=實際+1(分行符號分界)  printf("%s",s);----------------------------------------  fscanf(fp,"%[^\n]",&s);-------------------------------

  開啟檔案詳細如下:

對於檔案使用方式有以下幾點說明:1) 檔案使用方式由r,w,a,t,b,+六個字元拼成,各字元的含義是:r(read): 讀w(write): 寫a(append): 追加t(text): 文字檔,可省略不寫b(banary): 二進位檔案+: 讀和寫意義“rt” 唯讀開啟一個文字檔,只允許讀資料“wt” 唯寫開啟或建立一個文字檔,只允許寫資料“at” 追加開啟一個文字檔,並在檔案末尾寫資料“rb” 唯讀開啟一個二進位檔案,只允許讀資料“wb” 唯寫開啟或建立一個二進位檔案,只允許寫資料“ab” 追加開啟一個二進位檔案,並在檔案末尾寫資料“rt+” 讀寫開啟一個文字檔,允許讀和寫“wt+” 讀寫開啟或建立一個文字檔,允許讀寫“at+” 讀寫開啟一個文字檔,允許讀,或在檔案末追加資料“rb+” 讀寫開啟一個二進位檔案,允許讀和寫“wb+” 讀寫開啟或建立一個二進位檔案,允許讀和寫“ab+” 讀寫開啟一個二進位檔案,允許讀,或在檔案末追加資料

  處理的結果:(對於product/price: unknown 這一類未知的置為0處理)

B000NLZ4A2 0 0/0 4.0 1260230400B000NLZ4A2 0 0/0 4.0 1216339200B000NLZ4A2 0 1/2 5.0 1245024000B000AIO6RA 0 3/3 5.0 1122422400B000AIO6RA 0 0/0 4.0 1207958400B000NLZ4AM 0 2/2 4.0 1250208000B000NLZ4AM 0 2/2 5.0 1244764800B000NLZ4AM 0 2/2 5.0 1243296000B000NLZ4AM 0 1/1 4.0 1235952000B000NLZ4AM 0 0/0 5.0 1236816000B000F70V0M 0 1/1 5.0 1189468800B000F70V0M 0 0/0 4.0 1244678400B000F70V0M 0 0/0 5.0 1204502400B000F70V0M 0 0/0 5.0 1201478400..................以上只是一部分資料

  詳細代碼如下:

#include<stdio.h>#include<string.h>void getValue(char s[],char temp[]){      int end = strlen(s);      int start =0;      int i =0,j=-1;      char c;      for(i=end-2;s[i]!=‘ ‘;i--){            temp[++j]= s[i];      }    //  printf("\n");      temp[j+1]=‘\0‘;      for(i=0;i<=j;){              c=temp[i];              temp[i]=temp[j];              temp[j]=c;              i++;j--;               } }int main(){  FILE *fr,*fw;  int data,count;    long int sum=0;  char s[100000];//讀取一行資料   char temp[20];//截取空格後面的Value   char s1[20],s2[20],s3[20],s4[20],s5[20];//需要的5個屬性Value  char unknow[]="unknown";  char zero[]="0";  fr=fopen("Watches.txt","r");  fw=fopen("p.txt","wt");  count=1;  while(fgets(s,1028*80,fr)!=NULL){       //  printf("%s",s);         if(count!=11)                                 getValue(s,temp);               if(count==1)                strcpy(s1,temp);         else if(count==3){                strcpy(s2,temp);                if(strcmp(s2,unknow)==0)                     strcpy(s2,zero);                                                                 }         else if(count==6)                strcpy(s3,temp);          else if(count==7)                strcpy(s4,temp);         else if(count==8)                strcpy(s5,temp);                                                                       if(count==11){                                      fprintf(fw,"%s %s %s %s %s\n",s1,s2,s3,s4,s5);                count=0;          }         sum++;         count++;         fflush(fw);           printf("%ld\n",sum);           }  printf("%ld",sum);  fclose(fw);  printf("press any key to end!\n");  getchar();  return 0;}

  

  

 

Python讀取檔案資料

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.