2013-03-06 23 views
0

我有有存儲在每個文件的第7行的日期TEXTFILES,格式爲這樣:拆除特定的行空間文本文件的Python

Date: 1233PM 14 MAY 00 

我想通過每個文件進行搜索,並獲得新的生產線7格式化爲這樣的:

Date: 1233PM 14 MAY 2000 

所以,基本上,我只需要堅持一個「20」在最後兩位數字的前面七號線。

可能不是最困難的問題,但我一直有困難,因爲textfile.readlines()將所有內容讀入第一個(textfile [0])位置。

+0

你是什麼意思同時說「textfile.readlines()將所有內容讀入第一個(textfile [0])位置」。當我這樣做的時候,給我們一個來自你的文件和/或你的代碼的樣本,以瞭解你的問題 – 2013-03-06 04:00:36

+0

:infile = open('file.txt','r')然後嘗試做一個簡單的打印[7]它超出範圍,因爲open命令將整個文本文件讀入第一行位置。 – wuffwuff 2013-03-06 04:04:19

+0

你可以複製文件的一部分,並將其放入你的問題? – 2013-03-06 04:11:13

回答

0

可以讀取所有的文件,更改指定的行然後再保存它:

arc = open('file_name.txt').readlines()[0].split('\r') 

#Do what you want with the 7th line i.e. arc[6] 

new_arc = open('file_name.txt','w') 
for line in arc: 
    new_arc.write(line) 
    new_arc.write('\n') 

new_arc.close() 
+0

這將不起作用,因爲readlines()命令中的所有行都讀入第一個索引,即[0]位置。 – wuffwuff 2013-03-06 04:06:19

+0

@ user1951785好的,但它是如何將另一條線分開的?它使用\ r? – 2013-03-06 04:08:58

+0

可能......在Wordpad或NotePad ++中看起來很好,但在記事本中看起來像一個有趣的運行。 – wuffwuff 2013-03-06 04:14:09

0

試試這個:

# open file 
f = open("file.txt" , 'rU+b') 
lines = f.readlines() 

# modify line 7 
lines[6] = lines[6][:-2] + "20" + lines[6][-2:] 

# return file pointer to the top so we can rewrite the file 
f.seek(0) 
f.truncate() 

# write the file with new content 
f.write(''.join(lines)) 
f.close 
+0

這不起作用,因爲readlines()命令中的所有行都讀入第一個索引,即[0 ],position。 – wuffwuff 2013-03-06 04:09:37

+0

我不確定你的線條是如何分開的。如果它沒有用'\ n'分隔,什麼定義了文本文件中的新線條? – timp 2013-03-06 04:14:43

+0

文本文件是記事本中的一個長跑線,但看起來很好格式化在NotePad ++或寫字板 – wuffwuff 2013-03-06 04:15:45

0

也許這樣的:

with open(filename, 'r') as f: 
    lines = f.readlines() 

with open(filename, 'w') as f: 
    for idx, line in lines: 
     if idx == 7: # or 6 
      vals = line.split() 
      if len(vals[-1]) == 2: 
       vals[-1] = '20'+vals[-1] 
      line = ' '.join(vals) 
     f.write(line) 
相關問題