2017-08-11 45 views
0

我有一個ASCII文件,我需要從它的當前尷尬的格式,並創建一個新的文件,包含格式化的文本。輸入文件 - 在我的例子中是「datafile.txt」 - 包含一系列規則間隔和結構化的文本塊。我需要提取每個塊並重新格式化它們以符合特定的ASCII交換標準。閱讀,然後寫出一個選定的塊尷尬的文字

我知道每個塊的行範圍 - 在我的例子線2至6對於第一塊 - 而採取的答案在這裏(Reading in a text file in a set line range)寫道:

filetoread = open("datafile.txt","r") 
lines = filetoread.readlines() 
lines_pt1 = lines[2:6] 

filename = "myfile.txt" 
f = open(filename,"w") 
f.write(str(lines_pt1)) 

f.close() 

這工作,但我需要做進一步的工作來整理輸出字符串,刪除不想要的字符集,包括新行「/ n」和其他字符集,並加上長度爲5的所有空格替換爲長度爲1.

看來我需要制定出如何用列表中的字符串進行重新格式化,但迄今爲止我的嘗試失敗了。尋找最佳前進方向的建議。

編輯:在 「myfile.txt的」 期望輸出的 https://drive.google.com/file/d/0B8GBO17JqUcdZkhmVVZaNUJwdDA/view?usp=sharing

例: 「datafile.txt」 的 例 https://drive.google.com/file/d/0B8GBO17JqUcdUER6RnFrWTM1dVk/view?usp=sharing

+4

請上傳您的文件和您所需的輸出樣本,如果你是變異與您理想的程序文件。 – Ajax1234

+0

感謝您的建議 - 我已經添加了示例輸入文件和所需輸出示例的鏈接。 – poler

+0

請參閱下面的答案。 – Ajax1234

回答

0

從你的問題,我認爲:

  1. 您需要刪除每行的所有前導和尾隨空格/換行符
  2. 您需要將其替換爲et每5行只有一個空格

第1步可以完成myLine.strip(),它是任何字符串的內置方法。

對於第2步,您可以使用Python正則表達式模塊,re

import re 
... 
line_to_format = '...' 
line_to_format = res.sub(r'\s{5}', ' ', line_to_format) 

(在re更多信息可以在這裏找到:re - docs.python.org

希望幫助!

0

你可以試試這個:

f = [i.strip('\n') for i in open('practice_file.txt')] 

first_part = [i[5:] for i in f[2:7]] 

second_part = [i[5:] for i in f[8:]] 

final_data = first_part + second_part 

the_file = open('practice_file.txt', 'w') 

for i in final_data: 
    the_file.write(i+"\n") 

the_file.close()