質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

4回答

7100閲覧

for文 printの改行無くす

pussy_pussy

総合スコア22

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/12/23 08:52

編集2021/01/08 03:55

for文を回して複数回print関数で出力をするときに、出力された文字列の間に1行空いてしまうのですが
これを避ける方法はないのでしょうか?

追記:解決しました。このコードの部分です。rstrip関数を用いました。

python3

1def cat_n(filename): 2 f=open(filename,"r") 3 lines=f.readlines() 4 f.close() 5 6 for i in range(len(lines)): 7 print((str(i+1)+" "+lines[i]).rstrip('\n'))

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

t_obara

2020/12/23 09:36

どのように出力しているのかご提示ください。
guest

回答4

0

ベストアンサー

pythonの文字列に入っている個々の文字の中に改行文字というものがあります。これを書きたいときは\nと書きます。(バックスラッシュ)を入力したい場合はキーボードの¥を押します。\は¥の半角で表示される場合もあります。

改行文字があるとコンソール画面では行替えが行われます。

python

1>>> print("abc\ndef") 2abc 3def

これは、pythonだけでなく、C言語なども同じですが、OSやプログラミング言語によってはそうではない場合もあります。

また、pythonのprint関数は、出力の最期に自動的に\nを追加します。

\nの扱いとか、printの最期に\nが追加されるとかいうのは、それはpythonを作ったひとがそう決めたからです。C言語のprintfは最後に\nを追加しませんが、それはC言語を作った人がそう決めたからです。そのような決まりを仕様(specification)といいます。自動車が左を走る国もあれば、自動車が右を走る国もあるのと同じです。

このために、print文の引数が文字列でその最後に改行文字が入っていると、そこで2回改行されるので行間が空いてしまいます。

皆さんが書かれているようにend=""を入れることでこれを止めることもできます。また、rstripというメソッドを使って最後の改行文字を取り除くという方法もあります。

rstripの使い方は以下です。

python

1>>> for x in ["abc\n", "def\n"]: 2... print(x) 3... 4abc 5 6def 7 8>>> for x in ["abc\n", "def\n"]: 9... print(x.rstrip()) 10... 11abc 12def

投稿2020/12/24 01:03

ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pussy_pussy

2021/01/08 03:57

ありがとうございます。rstrip関数を用いて解決しました。 行間が空いてしまう理屈もわかりました。丁寧にありがとうございます。
guest

0

参考情報

  • Pythonでファイルを一行ずつ読み込む

https://www.purpledice.jp/read_the_file_line_by_line/

readline() をつかうyと、読み込んだ文字列には 改行コードがふくまれます。
次のコードとその実行結果を研究してみてください。

p.py

pythone3

1with open('p.py') as f: 2 for line in f: 3 print(line) 4 5with open('p.py') as f: 6 for line in f: 7 print(line.rstrip())

実行例
イメージ説明

投稿2020/12/23 21:09

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pussy_pussy

2021/01/08 04:12

rstripには引数を代入しなくてもよいのですね。ありがとうございます。
guest

0

既出ですが、endを使用する方法をコードにしてみました

Python

1for i in range(5): 2 print(i,end="") 3#01234

変則的でおすすめはしませんが、リストに一度入れてアンパックする方法もあります

Python

1hoge=[i for i in range(5)] 2print(*hoge) 3#0 1 2 3 4

投稿2020/12/23 14:06

sin471

総合スコア50

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pussy_pussy

2021/01/08 04:10

ありがとうございます。
guest

0

改行は'\n'の文字を出力することでなされますんで、printしている文字列にこれが含まれていないか調べよう。

Pythonのprint()関数で改行して出力する方法まとめ | HEADBOOST
これの逆をすればいいということになりますね

って、もしかして
print("なんたら", end="")
ってはなしかな。。

投稿2020/12/23 08:56

編集2020/12/23 09:36
y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pussy_pussy

2021/01/08 04:10

そのような方法もあるみたいですね。自分はrstrip関数を用いて解決しました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問