search
LoginSignup
33

More than 5 years have passed since last update.

posted at

updated at

pythonでファイルを読み込んで改行を消す【ファイル読み込みの注意点】

pythonを使ってファイル中の改行を取り除こうとしたらファイルの読み込みの仕様を理解していなかったため引っかかりました.
この記事は「改行を消す」ということより「ファイルの読み込み」についての注意点です.
なおpython初心者が書いているので,この方法が良いかは分かりません.
参考程度にお読みください.

間違った例

初めに私が間違った例を示します.

test1.py
#!/usr/bin/env python                                                           
#coding:utf-8                                                                   

f = open('test1.txt','r')

for line in f:
    text = line.replace('\n','')
    text = text.replace('\r','')
    print text,

f.close()

これを実行するとどうなるか?

実行結果
test てすと テスト

改行コードを空文字列に置き換えているはずが空白が入ってしまいました.
これは一行ずつ処理を行っているため以下のコードと同じようなことをしています.
(コメントより行毎で処理を行っても空白を消す方法があるようなので一行ずつ処理を行う方法もあるようです。(6/15修正))

space.py
#!/usr/bin/env python                                                           
#coding:utf-8

print 'test',
print 'てすと',
print 'テスト'

文末の,によって改行を取り除くことが可能ですがこの場合も空白が入ります.

pythonの場合は行ごとの処理を行うと文章中に無くても処理毎に空白が入ってしまうようです.

解決方法

これを解決するために行ごとでは無くファイルを全て読み込んで処理してみましょう.
ファイルを全て読み込む場合はread()を使います.

test2.py
#!/usr/bin/env python                                                           
#coding:utf-8                                                                   

f = open('test1.txt','r')
Allf = f.read()

text = Allf.replace('\n','')
text = text.replace('\r','')
print text,

f.close()

実行結果
testてすとテスト

無事改行もスペースも取ることが出来ました.

コード以外の注意点

行頭の#coding:utf-8を入れないと改行コードをコード中に書いた時にSyntaxErrorが出る場合があります.
Non-ASCⅡなどのエラーが出ている場合は宣言を確認しましょう.

また,改行コードは以下の通りです.

システム 改行コード
Linux \n
Mac \r
Windows \r\n

多くの場合は\nだけでも行けてしまうかもしれませんが,Windowsなどの場合は\rも取り除く必要があるので気をつけましょう.

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
33