答えて
print
は改行を付加し、入力ラインはすでに改行で終わる:あなたは改行を取り除くことができます。
import sys
with open("a.txt") as f:
for line in f:
sys.stdout.write(line)
PS:Pythonの3(または印刷機能付きのPython 2)については、abarnertのprint(…, end='')
溶液は、最も簡単なものである
標準溶液は、出力にそのまま入力ラインです。あなたはまた、splitlines()
機能を試すことができ
改行は追加されませんが、ファイルの各走査線には末尾の行が付きます。
てみ:
with open ("a.txt") as f:
for line in (x.rstrip ('\n') for x in f):
print line
改行文字が '\ n'でないため、これはWindows(またはOS X以前のMac OS)では失敗します。 – EOL
これは、ファイルa.txtが存在しない場合にも失敗します。 – Hyperboreus
@Ele AFAIK、私は間違っているかもしれませんが、Pythonでテキストモードで開いたファイルは、すべての行末が暗黙的に '\ n'に変換されています。 – Hyperboreus
何が起こるかというと末尾の改行、およびPythonでprint
ステートメントとして、各行でも改行を追加することです。
with open("a.txt") as f:
for line in f:
print line.strip()
'strip()'も先行する空白を削除するので、空白で始まる行が含まれている場合、この解決法は入力ファイルを正しく印刷できません。実際には 'rstrip()'が必要です。 'rstrip()'はあまり良くありません。改行(良い)は削除されますが、末尾の空白は入力ファイルの行をいくつかの望ましくない方法で変更するので、 'rstrip必要なことを完全に行います。 – EOL
、それが自動的にストリップ:他の回答は説明
f = open('a.txt').read()
for l in f.splitlines():
print l
これは、複数のオペレーティングシステムのさまざまな改行規則を正しく処理しますが、Python 2とPython 3の両方で、この解決策は大量のメモリ:ファイル全体がメモリに読み込まれるだけでなく、その行のリストを通してコピーが作成されます。したがって、これはうまくいく方法ですが、それほど大きくないファイルに対してのみです。この解決策が他の回答のように「with」を使用した場合、メモリは最終的に解放されることに注意してください。 – EOL
@EOL: 'with'はメモリの解放に影響しません。ファイルを閉じるかどうかに関わらず、巨大な 'f'文字列はまったく同じ時間量だけ生きています。 (もちろん、ファイルハンドルが漏れないようにすることは良い考えです。これは 'f'や' f.splitlines'のGCには関係ありません) – abarnert
@abarnert:そうです。私はなぜメモリが 'with 'で解放されるのか(なぜなら、関与するメモリ量は実際には無視できる)と書いたのか分かりません。 – EOL
として、各行は改行を持っています。あなたがprint
の裸の文字列の場合、最後に行が追加されます。これには2つの方法があります。他のすべては、同じ2つのアイデアのバリエーションです。あなたがそれらを読むよう
まず、あなたは改行を取り除くことができます。
with open("a.txt") as f:
for line in f:
print line.rstrip()
これは、スペースやタブなどの他の末尾の空白、だけでなく、改行を削除します。通常、これは気にしません。そうした場合、あなたはおそらく、ユニバーサル改行モードを使用すると、改行剥ぎ取る:
with open("a.txt", "rU") as f:
for line in f:
print line.rstrip('\n')
ただし、テキストファイルがあることがわかっている場合は、たとえば、Windowsの改行ファイル、またはネイティブにしますファイルプラットフォーム - 私は - ランニング・オン・右今-改行--whichever、明示的に適切な終末を取り除くことができます。
with open("a.txt") as f:
for line in f:
print line.rstrip('\r\n')
with open("a.txt") as f:
for line in f:
print line.rstrip(os.linesep)
それを行うための他の方法は、元の改行を残すことです余分なものは印刷しないでください。これはsys.stdout
にsys.stdout.write(line)
と書いて行うことができますが、print
からでも行うことができます。
print
ステートメントの末尾にコンマを追加するだけで、改行を印刷するのではなく、「スマートスペース」が追加されます。 Exactly what that meansはややこしいですが、考えなければならないときはスペースを追加し、そうでなければ何もしないという考えがあります。最もDWIMアルゴリズムと同様に、それは常に物事を取得していない右が、この場合には、それがない:
with open("a.txt") as f:
for line in f:
print line,
はもちろん、我々は今、ファイルの改行があなた一致していることを想定しているterminal'sを-場合はでこれを試してみてください、 Unix端末上の古典的なMacファイルを使用すると、最後の行に印刷する各行が終了します。ここでも、普遍的な改行を使用して回避することができます。
とにかく、printステートメントの代わりにprint関数を使うことで、スマートスペースのDWIMマジックを避けることができます。
from __future__ import print_function
with open("a.txt") as f:
for line in f:
print(line, end='')
それとも好む場合は、six
のようなサードパーティ製のラッパーライブラリを使用することができますPythonの2.xでは、あなたは__future__
宣言を使用してこれを取得します。
'\ r'を取り除くのは、ファイルをテキストモードで開いたため意味がありません。' \ r'文字は削除する前に削除されています。テキストファイルにはPython 2とバイナリモードでのみ有効です(Python 3とは互換性がありません) –
- 1. Pythonエスケープシーケンスコンプレックス出力
- 2. Pythonの出力
- 3. Python出力エラー
- 4. Pythonマルチプロセッシング出力
- 5. Pythonの出力
- 6. Pythonプログラミングブランク出力
- 7. のPythonのElementTreeは出力
- 8. 入力、出力層sklearn python
- 9. 出力にPythonバージョンを出力する
- 10. Pythonカラー出力とページング出力
- 11. Pythonが出力される出力
- 12. Pythonログpythonインタプリタの出力
- 13. Pythonコードの出力
- 14. Python Cyrilicエンコード出力
- 15. Python入出力ファイル
- 16. Pythonラムダの出力
- 17. Pythonのフォーマット出力
- 18. Python spark streaming出力
- 19. Python出力のラテックステーブル
- 20. のPython Scapy出力
- 21. Pythonのサブプロセス出力
- 22. Emacsは、出力のpythonシェルに結果
- 23. Pythonのリスト表現出力は、
- 24. Pythonでエラーを出力するには?
- 25. リダイレクトPythonの出力はファイルに
- 26. はPythonが所望の出力に
- 27. Pythonは、出力形式の問題
- 28. TeamViewer API Python呼び出し - 出力成功またはエラー出力ファイル
- 29. CプログラムへのPython入力の出力
- 30. Python Tkinterウィンドウ出力とシェル入力
OPは明らかにPython 2を使用しています。2.xユーザー向けに 'print_function'を提案することは常に良い考えです。 'print'の魔法のソフトスペースを使うのは、もしそれが何を意味し、どのように働くのかを最初に学ばなければ、おそらく悪い考えです。あなたの明示的な 'write'が最良の答えかもしれないことを意味します(私はあなたの答えをupvotedし、OPはそれを受け入れることが正しいと思います)。 – abarnert
REF https://docs.python.org/2/library/functions.html#print –