ファイルのテキストを本気で整形できないか考えたい(pythonで)

Pythonのsplit()とjoin()でテキストファイルを整形する方法を考えていましたというはなしです。

Pythonでテキストファイルを整形するにはどうしたらいい?

まずopen()関数にテキストファイルを渡す。そしてそれをforループで回す。

with open('C:\\Users\\Desktop\\a.txt') as f:
 for line in f:
 print(line)

こうすると1行ずつ読み込むものの実質のところ全体で見ると改行文字が入った長い1つの文字列である。


そこで改行文字をsplit(‘\n’)でわける。

with open('a.txt') as f:
 for line in f:
 print(line.split('\n'))

python テキストファイル 整形
するとなにやら空文字が入ったリストに分割された。


この空文字は邪魔なのでdel文を使って消す

with open('C:\\Users\\Desktop\\a.txt') as f:
 for line in f:
 splists = line.split('\n')#['ウィンドウの数:63', '']
 del splists[1]
 print(splists)</strong>

python テキストファイル 整形2

ここまではなんとかなった。


「———-」という文字でsplit(‘———-‘)してみる。すると失敗する。なぜならlist[]にはsplit()はつかえないからだ。実はjoin()になにも渡さないとそのままリストを文字列に変換する。

with open('C:\\Users\\Desktop\\a.txt') as f:
 file = open('output.txt','w')
 for line in f:
 line = line.split('\n')#['ウィンドウの数:63', '']
 del line[1]
 line = ''.join(line)
 line = line.split('----------')
 line = ('\n').join(line)
 file.write(line)
 print(line)
 file.close()


最終的にはこんな感じになって、逆に読みにくくしてしまった。
結局rjust(),ljust()で整形するにはいたらなかった。でも頑張ればいけそうである。

一応fileに保存するところまで書いた。withと普通にopenしていてかなりわかりにくい。

今回学んだポイント

  • listはファイルに書き込めない
  • split()は文字列にしか使えない。
  • join()は空でつなげるとそのままリストを文字列にする。

無駄に時間がすぎたけどわりと得るものはあったかも・・・。