[英]Splitting 25mb .txt file into smaller files using text delimiter
問候,所以
我是python和Perl的新手。 我一直在嘗試解決一個簡單的問題,並在語法上打結。 我希望有人有時間和耐心來提供幫助。 我有一個25mb的文件,其格式為“ .txt”,其中包含可追溯到1970年的新聞專線文章。每個新聞故事都串聯到下一個新聞報道中,僅用“ Copyright”語句來定界。 每個新聞故事都以“ XXX DOCUMENTS項XX”開頭。 某些重復的元數據會在整個過程中重復,稍后我將使用它們進行標記。
我希望將這個25mb的文件拆分為單獨的.txt文件,每個文件包含一個新聞報道(即“ DOCUMENTS”和“ Copyright”之間的文本,並用不同的名稱保存(顯然)。
我正在嘗試1)打開文件... 2)遍歷文件中的行以檢查eof分隔符,如果不存在,則將該行寫入列表3)將該列表寫入單獨的小文件。
我在使用計數器更改文件名時遇到了大問題,如何使Python從我中斷的地方開始,“搜索”功能是否合適?
到目前為止,我一直在嘗試這種方法,但完全沒有成功:
myfile = open ("myfile.txt", 'r')
filenumber = 0
for line in myfile.readline():
filenumber += 1
w=0
while myfile.readline() != '\s+DOCUMENTS\s*\n'
### read my line into a list
mysmallfile()['w'] = [myfile.readline()]
w += 1
output = open('C:\\Users\\dunner7\\Documents\###how do I change the filename each iteration???', 'w')
output.writelines(mysmallfile)
###go back to start.
感謝您的時間和耐心等待。
RD
這是文本文件的示例:
1 of 575 DOCUMENTS
The Washington Daybook
January 28, 2011
衛生及公眾服務部(HHS); 食品和葯物管理局(FDA)(FR第72832頁)於1月27日至28日舉行了醫療設備咨詢委員會神經設備小組會議,以討論和建議用於電痙攣治療的設備可能的重新分類。
時間:上午8點
地點:北華盛頓/蓋瑟斯堡希爾頓酒店,宴會廳,佩里公園路620號,蓋瑟斯堡,馬里蘭州
聯系人:James Engles,電話:800-741-8138 [注意:致電時,請使用代碼:3014512513。
加載日期:2010年11月28日
英語語言
類型:會議
Copyright 2011 Federal Information and News Dispatch, Inc.
2 of 575 DOCUMENTS
The Washington Daybook
January 27, 2011
衛生及公眾服務部(HHS); 食品和葯物管理局(FDA)(FR第72832頁)於1月27日至28日舉行了醫療設備咨詢委員會神經設備小組會議,以討論和建議用於電痙攣治療的設備可能的重新分類。
時間:上午8點
地點:北華盛頓/蓋瑟斯堡希爾頓酒店,宴會廳,佩里公園路620號,蓋瑟斯堡,馬里蘭州
聯系人:James Engles,電話:800-741-8138 [注意:致電時,請使用代碼:3014512513。
加載日期:2010年11月28日
英語語言
類型:會議
Copyright 2011 Federal Information and News Dispatch, Inc.
3 of 575 DOCUMENTS
FNS DAYBOOK
January 12, 2011 Wednesday
FUTURE EVENTS
事件:會議-衛生與公共服務部(HHS); 食品和葯物管理局(FDA)(FR PAGE 72832); 地點:馬里蘭州蓋瑟斯堡佩里公園路620號,華盛頓特區北/蓋瑟斯堡希爾頓酒店,2011年1月27日上午8:00
部分:聯邦機構和部門-未來
長度:72個字
主題:衛生和公共服務部(HHS); 食品和葯物管理局(FDA)(FR第72832頁)於1月27日至28日舉行了醫療設備咨詢委員會神經設備小組會議,以討論和建議用於電痙攣治療的設備可能的重新分類。
聯系人:James Engles,電話:800-741-8138 [注意:致電時,請使用代碼:3014512513。
加載日期:2011年1月10日
英語語言
出版物類型:活動時間表
Copyright 2011 Federal News Service
All Rights Reserved
像這樣:
filenumber = 0
outfile = None
with open('source_file.txt') as f:
for line in f:
if line.strip() == 'DOCUMENTS':
filenumber += 1
outfile = open('result%03d.txt' % filenumber, 'w')
elif line.strip().startswith('Copyright') and outfile:
outfile.close()
outfile = None
elif outfile:
outfile.write(line)
if outfile:
outfile.close()
我不得不猜測很多事情,因為我完全不知道文件的外觀。 如果您還有其他問題,請發布文件。
一路走來的幾個問題:
myfile.readline()
在兩個循環迭代和寫入小文件時-只使用line
,當你想知道當前行的內容 myfile.readline() != 'string'
位總是會失敗,這實際上不是regexp匹配。 mysmallfile()['w']
看起來過於聰明(如果您正在使用mysmallfile()
函數返回以'w'索引的數組或字典來檢索L值(!)),或者您只是這樣當然偏離這里:) nosklo的建議有很多清理工作,我希望我的帖子可以幫助您了解他如何找到他。 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.