次の形式のテキスト ファイルに出力される空間データを操作します。
COMPANY NAME
P.O. BOX 999999
ZIP CODE , CITY
+99 999 9999
23 April 2013 09:27:55
PROJECT: Link Ref
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Design DTM is 30MB 2.5X2.5
Stripping applied to design is 0.000
Point Number Easting Northing R.L. Design R.L. Difference Tol Name
3224808 422092.700 6096059.380 2.520 -19.066 -21.586 --
3224809 422092.200 6096059.030 2.510 -19.065 -21.575 --
<Remainder of lines>
3273093 422698.920 6096372.550 1.240 -20.057 -21.297 --
Average height difference is -21.390
RMS is 21.596
0.00 % above tolerance
98.37 % below tolerance
End of Report
示されているように、ファイルにはヘッダーとフッターがあります。データはスペースで区切られていますが、列間の量が等しくありません。
私が必要としているのは、Easting、Norting、および Difference を含むカンマ区切りのファイルです。
数百の大きなファイルを手動で変更する必要がないようにしたいので、ファイルを処理するための小さなスクリプトを作成しています。これは私がこれまでに持っているものです:
#! /usr/bin/env python
import csv,glob,os
from itertools import islice
list_of_files = glob.glob('C:/test/*.txt')
for filename in list_of_files:
(short_filename, extension )= os.path.splitext(filename)
print short_filename
file_out_name = short_filename + '_ed' + extension
with open (filename, 'rb') as source:
reader = csv.reader( source)
for row in islice(reader, 10, None):
file_out= open (file_out_name, 'wb')
writer= csv.writer(file_out)
writer.writerows(reader)
print 'Created file: '+ file_out_name
file_out.close()
print 'All done!'
質問:
「ポイント番号」で始まる行を出力ファイルのヘッダーにするにはどうすればよいですか? リーダー/ライター ビットの代わりに DictReader を配置しようとしていますが、機能しません。
区切り文字「,」を使用して出力ファイルを書き込むことは機能しますが、各スペースの代わりにコンマを書き込むため、出力ファイルに空の列が多すぎます。どうすればこれを回避できますか?
フッターを削除するにはどうすればよいですか?