2016-09-17 8 views
-1

私はちょうどPythonを使い始めました。私は誰でも質問をしてから、テキストファイルから質問します特定の行を抽出して、その行を行とともに印刷します。最後に、その答えを追加します。ここにコードがあります。`end = 'を使用しているときに改行を避ける方法はありますか

question = input("do you want to print the line") 
    if "yes" in question: 
     print(open("tp.txt").readlines()[:10][-1],end=question) 

問題は、,end=question)が新しい行にユーザーの回答を入れてしまうことです。私はend=\nと同じことを知っています。ですから、私は 'end ='を自動的に新しい行を作成するのを止める手段または代替手段があるのだろうかと思っていますか?

print(open("tp.txt").readlines()[:10][-1], 

with open (filename.txt,'r') as f:

+0

いいえ: "特定の行を読んで" する方法はありません。 'open( 'file.txt')をf:lines = f.readlines()'とし、 'line_n = lines [n]'を実行することができますが、ファイル全体がメモリに格納されます。これは、ファイルは基本的に**シーケンシャル**であり、*ラインベースではない*ためです。 – Bakuriu

答えて

0

問題がreadlines()によって返された行はエンディングを含有していることであるという行うよりも、私は開く方法ですと行うにはその「素敵」ショートカットので、ファイル から特定の行を読みます改行:

$ echo 'a 
> b 
> c 
> ' > test_file.txt 
$ python3 
Python 3.5.2 (default, Jul 5 2016, 12:43:10) 
[GCC 5.4.0 20160609] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> with open('test_file.txt') as f: 
...  print(f.readlines()) 
... 
['a\n', 'b\n', 'c\n', '\n'] 

\nを参照してください。だから、あなたはそれを削除したい

>>> print('a') 
a 
>>> 

>>> print('a\n') 
a 

>>> 

そして:bewteen違いに注意してくださいません

>>> with open('test_file.txt') as f: 
...  for line in f: 
...   print(line.rstrip('\n'), end='<something>') 
... 
a<something>b<something>c<something><something>>>> 
+0

それで '.rstrip'は特定の場所にある必要があります –

+0

@ j.doeどういう意味ですか? 'rstrip'は文字列の最後から文字を削除します(' r'は* right *を表します)。文字列の先頭から削除する場合は 'lstrip'を使います(' l'は* left *を表します)。最初と最後の両方から削除する場合は、 'strip'を使用するよりも。しかし、改行が常に正しいとすれば、 'rstrip'を使う方が良いと思います。 – Bakuriu

+0

オハイオ州オハイオ州深刻な私はそれを今得意に誤解した。 「with」と「as」を意味するもの –

関連する問題