Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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も取り除く必要があるので気をつけましょう.

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした