數據處理——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內容混亂的情況,這個時候我們可以通過正則表達式去提取想要的信息,若是以後處理這樣的數據,我會及時更新噠~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章