数据处理——Txt文件读写追加

欢迎闲逛~~~

1.Txt读取

以Aminer-Paper文件为例,这个文件网上随便一搜就有
这里的dir是自己设置的默认路径
1.按照字节读取

with open(os.path.join(dir, 'Aminer-Paper.txt'), 'r', encoding='UTF-8') as f:
    line = f.read(3)  #3表示字节数
print(line)
输出:
#in

2.按照行读取

with open(os.path.join(dir, 'Aminer-Paper.txt'), 'r', encoding='UTF-8') as f:
    line = f.readline()
print(line)
输出:
#index 1

3.读取整个数据

with open(os.path.join(dir, 'AMiner-Paper.txt'), 'r', encoding='UTF-8') as f:
    line=f.readlines()   #注意这里是readlines
print(line)
输出:
#index1
....(文件太大,不建议这样读取)

4.按照行读取,查看前几行数据

with open(os.path.join(dir, 'AMiner-paper.txt'), 'r', encoding='UTF-8') as f:
   for i, line in enumerate(f):     #注意这里的i是行数,line是值
         if i<4
             print(line)
输出:
#index 1
#* Book Review: Discover Linux
#@ Marjorie Richardson

2.Txt文件读写r,w,a的使用

读:r
写:w 这里的写是在文件内写入,覆盖先前存在的内容
追加:a 这里的追加是在先前存在的内容后写入
可读可写:r+ 文件不存在会报错
可读可写:w+ 文件不存在会创建
可写可追加:a+ 文件不存在会创建
二进制文件加b:rb wb abrb+ wb+ ab+

举个例子:在原有文件A后追加文件B前10行的内容

h=open('C:/Users/Totoroyun/Desktop/A.txt','a+')  #注意这里a+是可写可追加
f=open('C:/Users/Totoroyun/Desktop/B.txt','r')    #注意这里r是可读
for i, line in enumerate(f): #行和value
if i <10:
    h.write(line)
f.close()
h.close()

A文件先前的内容:
A文件内原先的内容
B文件的内容:
B文件的内容
追加之后A的内容:
在这里插入图片描述

3.Txt文件处理

1.获取特定格式的数据

with open(os.path.join(dir, 'AMiner-Paper.txt'), 'r', encoding='UTF-8') as f:
    for i, line in enumerate(f): 
     	if i<100:
            if 'index' in line:
                print(line)
输出是前100行中带有index的行数据

2.获取特定数据,并规整

with open(os.path.join(dir, 'AMiner-Paper.txt'), 'r', encoding='UTF-8') as f:
    dict_list = []
    c_dict = {}
    for i, line in enumerate(f): 
        c_line = line.strip()[1:].strip()      #默认删除空白符(包括'\n', '\r',  '\t',  ' ')
        if len(c_line)<1:                #这里主要用来判断空行,index之间以空行隔开了(只适用于本例)
            if len(c_dict)>0:
                dict_list += [c_dict]            #将赋值的字典放到list里面
            c_dict = {}
        else:
            c_frag = c_line.split(' ')         #将每行按照空格分开
            c_dict[c_frag[0]] = ' '.join(c_frag[1:])    #赋值key和value

paper_df=pd.DataFrame(dict_list)   #将txt转为DataFrame格式的文件,之后可以重命名文件的列名
paper_df.rename({'o': 'Affiliation',
                 '%': 'Reference', 
                 '*': 'Title',
                 '@': 'Authors',
                  'c': 'Journal',
                  't': 'Year',
                  'index':'Index'},axis=1,inplace=True)

以上是基本的txt操作,现实生活中也会碰到txt内容混乱的情况,这个时候我们可以通过正则表达式去提取想要的信息,若是以后处理这样的数据,我会及时更新哒~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值