読者です 読者をやめる 読者になる 読者になる

けつあご日記

こんちは.菊地です.なんか浅ーいことをいろいろ書きます

Python: ファイルの書き出しで改行をうまく処理

Python

環境:Windows7(64bit), Python 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)] on win32

けっこうはまってしまったお.メモ.

結論から言うと,write()のときにうまくrstrip()してやればよかったというだけのお話です.

はじめreplaceとかやっていて手こずってしまいました.


やりたかったのは,
各要素の末尾に改行('\r\n')を含むリストと含まないリストがあって,それらを組み合わせて出力する
ということ.

txtファイルの読み込みの際にうまくいかず,

list1 = ['hoge1 foo1\r\n', 'hoge2 foo2\r\n', ...]

みたいなのと

list2 = ['munya1','munya2', ...]

みたいなのができてしまいました..

これらから

hoge1 foo1 munya1
hoge2 foo2 munya2
.
.
.

と並んだtxtファイルをつくりたかったんですが,write()で書きだしていく際に改行がまじってうまく並びませんでした.

list1の'\r\n'が消えればよかったので,

for i in list1:
    i.replace('\r\n', '')

とか

for i in list1:
    i.replace('\\r\\n', '')

とかいろいろ試したがなぜかうまくいきません.

結局はここでいじる必要はなく,書き出しの際に

g = open('OUTPUT.txt', 'w')
for i in range(len(list1)):
    g.write(list1[i].rstrip('\r\n') + ' ')
    g.write(list2[i])
    g.write('\n')

のように,rstrip('\r\n')をするとうまくいきました.

でも,これができてreplaceだとうまくいかない理由が分かりません.うーーん.分かる方いましたら是非教えてください.
というか,うまい人ならそもそも読み込みの際にこんなことは起こさないんでしょうね.


txtファイル書き出しではなく,printのときにうまく処理したいという方はこちらが参考になると思います.
Python Tips:改行なしで文字列を出力したい - Life with Python
Python2を使用しているので,Python3のprint関数を使ったやりかたは思いつきませんでした.インポートして使おうと思います.


プログラミング超初心者が初心者になるためのPython入門(1) セットアップ・文字列・数値編
プログラミング超初心者が初心者になるためのPython入門(1) セットアップ・文字列・数値編