Python 通過分隔符分割文件后按特定次序重新組合的操作
看代碼吧~
#-*-encoding:utf-8-*-
import os, sys, time, datetime, glob
fo1 = open("C:/Users/Administrator/Desktop/areainfo.txt", "w")
fo2 = open("C:/Users/Administrator/Desktop/personinfo.txt", "w")
for root, dirs, files, in os.walk("E:/test", topdown=False):
for name in files:
file_name = os.path.join(root,name)
if os.path.splitext(file_name)[1] == '.txt':
print(file_name)
with open(file_name) as a_file:
for data in a_file.readlines():
str2=[]
str4=[]
for i in [0, 1, 2, 3, 7]:
str2.append(data.split('||~||')[i])
fo1.write("||~||".join(str2)+"\n")
for i in [4, 5, 6, 7, 8, 9, 10, 11]:
str4.append(data.split('||~||')[i])
fo2.write("||~||".join(str4)+"\n")
fo1.close()
fo2.close()
補(bǔ)充:python按照某個(gè)分隔符切分text文件字符串并存入excel
有一份如圖所示的文件信息,信息量較大需要將text文件轉(zhuǎn)為excel處理,按照?qǐng)D中的分隔符“&”分列數(shù)據(jù)存儲(chǔ)至excel文件。

實(shí)現(xiàn)代碼如下:
# -*- coding: utf-8 -*-
"""
Created on Mon Mar 30 18:05:35 2020
@author: fengzi
"""
import os
import pandas as pd
from datetime import datetime
def main():
source_dir = 'E:/服管部/滿意度調(diào)研/滿意度影響因子分析/3.18\BI提單數(shù)據(jù)/BI2020031700005分開/分列測(cè)試/集團(tuán)成員.txt'
target_dir = 'E:/服管部/滿意度調(diào)研/滿意度影響因子分析/3.18\BI提單數(shù)據(jù)/BI2020031700005分開/分列測(cè)試/集團(tuán)成員.xlsx'
new_colums = "look\r\n"
start_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print("開始時(shí)間:",start_time)
#文件開頭增加新的一列內(nèi)容作為列名(原列名太長(zhǎng)/不可用)
f = open(source_dir, 'r')
content = f.read() # 讀取文件內(nèi)容
f_new = open('b.txt', 'w')
f_new.write(new_colums) # 開頭寫入內(nèi)容并換行
f_new.write(content) # 寫入原文件內(nèi)容
f_list=list(set(f.readlines())) #先把內(nèi)容readlines()為列表,然后用set集合去重后再轉(zhuǎn)化為列表,賦值于變量f_list
for i in f_list: #for循環(huán)列表f_list,判斷是否有“\n”字符,如果有,將元素‘\n'移除
if i=='\n':
f_list.remove(i)
f_new.writelines(f_list) #將列表f_list的內(nèi)容(此時(shí)列表已去除換行空白行),通過writelines的方式寫入新文件,
f.close()
f_new.close()
os.remove(source_dir) # 移除老文件
os.rename('b.txt', source_dir) # 新文件命名為老文件名
data = pd.read_csv(source_dir,"rb",engine='python') #讀入數(shù)據(jù)出現(xiàn)亂碼可添加engine='python'
#字符串切分后結(jié)果分列展示
df = pd.DataFrame(data, columns=["look"]) #需要分列的列名
df=df["look"].str.split('&', expand=True) # 分列的字符,split默認(rèn)輸出list,設(shè)置expand=True結(jié)果會(huì)分列展示
#print(df)
df.to_excel(target_dir) #列表df存儲(chǔ)至excel
end_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print("完成時(shí)間",end_time)
if __name__ == "__main__":
main()
代碼實(shí)現(xiàn)效果:

此代碼的缺陷是實(shí)現(xiàn)效果不佳,增加了首列和首行的序號(hào),后期有時(shí)間再學(xué)著改善。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
Python中PyQt5可視化界面通過拖拽來(lái)上傳文件的實(shí)現(xiàn)
本文主要介紹了Python中PyQt5可視化界面通過拖拽來(lái)上傳文件的實(shí)現(xiàn),通過構(gòu)建一個(gè)可接受拖拽的區(qū)域,并重寫相關(guān)事件處理函數(shù),可以方便地實(shí)現(xiàn)文件上傳功能,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12
Windows下Anaconda和PyCharm的安裝與使用詳解
這篇文章主要介紹了Windows下Anaconda和PyCharm的安裝與使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
詳解如何通過Python實(shí)現(xiàn)批量數(shù)據(jù)提取
每天面對(duì)成堆的發(fā)票,無(wú)論是發(fā)票還是承兌單據(jù),抑或是其他各類公司數(shù)據(jù)要從照片、PDF等不同格式的內(nèi)容中提取,我們都有必要進(jìn)行快速辦公的能力提升。本文就教你如何利用Python實(shí)現(xiàn)批量數(shù)據(jù)提取吧2023-03-03
tkinter高級(jí)布局之PanedWindow和notebook詳解
本文主要介紹了tkinter中的兩種布局控件,分別是可以動(dòng)態(tài)劃分子控件的PanedWindow,和提供了選項(xiàng)卡工具的notebook,感興趣的小伙伴可以學(xué)習(xí)一下2023-08-08
Tensorflow卷積神經(jīng)網(wǎng)絡(luò)實(shí)例
這篇文章主要為大家詳細(xì)介紹了Tensorflow卷積神經(jīng)網(wǎng)絡(luò)實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05

