1题目要求:

  文本文件有这些数据,需要的只有其中的5个属性,如下颜色标记

  像以下的数据达到75万组:

1product/productId: B0000UIXZ4
2product/title: Timex Link USB Watch
3product/price: unknown
4review/userId: A14MVG2I9PS6NZ
5review/profileName: B. Kuiper "Wah"
6review/helpfulness: 0/0
7review/score: 5.0
8review/time: 1275091200
9review/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 1260230400
B000NLZ4A2 0 0/0 4.0 1216339200
B000NLZ4A2 0 1/2 5.0 1245024000
B000AIO6RA 0 3/3 5.0 1122422400
B000AIO6RA 0 0/0 4.0 1207958400
B000NLZ4AM 0 2/2 4.0 1250208000
B000NLZ4AM 0 2/2 5.0 1244764800
B000NLZ4AM 0 2/2 5.0 1243296000
B000NLZ4AM 0 1/1 4.0 1235952000
B000NLZ4AM 0 0/0 5.0 1236816000
B000F70V0M 0 1/1 5.0 1189468800
B000F70V0M 0 0/0 4.0 1244678400
B000F70V0M 0 0/0 5.0 1204502400
B000F70V0M 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读取文件数据的更多相关文章

  1. python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件

    python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 python操作txt文件中 ...

  2. Windows下Python读取GRIB数据

    之前写了一篇<基于Python的GRIB数据可视化>的文章,好多博友在评论里问我Windows系统下如何读取GRIB数据,在这里我做一下说明. 一.在Windows下Python为什么无法 ...

  3. Python读取JSON数据,并解决字符集不匹配问题

    今天来谈一谈Python解析JSON数据,并写入到本地文件的一个小例子. – 思路如下 从一个返回JSON天气数据的网站获取到目标JSON数据串 使用Python解析出需要的部分 写入到本地文件,供其 ...

  4. python 读取文件read.csv报错 OSError: Initializing from file failed

    小编在用python 读取文件read.csv的时候 报了一个错误 OSError: Initializing from file failed 初始化 文件失败 检查了文件路径,没问题 那应该是我文 ...

  5. python 读取文件时报错UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 205: illegal multib

    python 读取文件时报错UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 205: illegal multib ...

  6. python 读取excel数据并将测试结果填入Excel

    python 读取excel数据并将测试结果填入Excel 读取一个Excel中的一条数据用例,请求接口,然后返回结果并反填到excel中.过程中会生成请求回来的文本,当然还会生成一个xml文件.具体 ...

  7. python读取文件首行和最后一行

    python读取文件最后一行两种方式 1)常规方法:从前往后依次读取 步骤:open打开文件. 读取文件,把文件所有行读入内存. 遍历所有行,提取指定行的数据. 优点:简单,方便 缺点:当文件大了以后 ...

  8. 【python】python读取文件报错UnicodeDecodeError: 'gbk' codec can't decode byte 0xac in position 2: illegal multibyte sequence

    python读取文件报错UnicodeDecodeError: 'gbk' codec can't decode byte 0xac in position 2: illegal multibyte ...

  9. python 读取文件时报错UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 205: illegal multibyte sequence

    python读取文件时提示"UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 205: illegal m ...

随机推荐

  1. 单条sql性能分析与优化

    性能分析 1. explain 查看sql执行计划,得出索引使用情况等信息 2. show profiling 查看sql所有执行步骤以及用时,使用步骤如下 1)开启性能剖析 mysql> se ...

  2. NSOperationQueue 和 NSOperation

    The NSOperationQueue class regulates the execution of a set of NSOperation objects. After being adde ...

  3. Vue.js常用指令汇总(v-if//v-show//v-else//v-for//v-bind//v-on等)

    有时候指令太多会造成记错.记混的问题,所以本文在记忆的时候会采用穿插记忆的方式,交叉比对,不易出错. 本文主要讲了一下六个指令: v-if//v-show//v-else//v-for//v-bind ...

  4. 【转载】struts应用在断网情况下启动报错解决办法(java/net/AbstractPlainSocketImpl.java:178:-1)

    无意间struts应用在有网络的情况下启动正常,在断网的情况下启动报错,报错代码如下图所示: SEVERE: Exception starting filter struts2 Class: java ...

  5. python 常用的模块(base64)转

    Base64是一种用64个字符来表示任意二进制数据的方法. 用记事本打开exe.jpg.pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的 ...

  6. 新人补钙系列教程之:AS3 位运算符

    ECMAScript 整数有两种类型,即有符号整数(允许用正数和负数)和无符号整数(只允许用正数).在 ECMAScript 中,所有整数字面量默认都是有符号整数,这意味着什么呢? 有符号整数使用 3 ...

  7. 机器学习第4课:多变量线性回归(Linear Regression with Multiple Variables)

    4.1  多维特征 目前为止,我们探讨了单变量/特征的回归模型,现在我们对房价模型增加更多的特征, 例如房间数楼层等,构成一个含有多个变量的模型,模型中的特征为(x1,x2,...,xn).

  8. 设置textField的placegolder的字体大小和字体颜色

           由于项目的主题颜色为灰黑色,所以当使用textField的时候,placeholder内的字体默认是灰色,当程序执行的时候,差点儿看不到.        翻来翻去找到一种比較简单地方法, ...

  9. 转:android实时语音问题分析

    转:http://ticktick.blog.51cto.com/823160/1746136 PigeonCall:一款Android VoIP网络电话App架构分析 2016-02-29 20:1 ...

  10. 使用PowerDesigner进行代码生成

    很多代码生成器都选择了从表结构来生成领域模型,这样的方案有一个前提,就是领域模型和数据库表结构是同构的,也就是说领域模型中的类和数据库中的记录结构十分吻合,这样数据库表结构可以简单的直接映射到领域模型 ...