2017-10-27 15 views
2

私はこのコードがなぜ問題ですか。文字列の長さが入力と一致しないのはなぜですか? stdinは、改行/改行時に反復して行を生成する、任意のファイルのようなイテレータのような行の長さPythonは標準入力から読み込みます

from sys import stdin 
for line in stdin: 
    for x in line: 
     print(x) 
+1

を。 'len(line.rstrip())'を試してください。あなたは普通のファイルで同じ動作をするでしょう –

+3

はい、また試してみてください: 'print(repr(line))'をすべて表示するには... –

+0

@ Jean-FrançoisFabre:答えは、コメントではありません。 –

答えて

2

:私は推測

input: a 
output: 2 

from sys import stdin 
for line in stdin: 
    print(len(line)) 
1

は、それはまたあなたの改行文字「\ n」が

は、このコードを試してみてくださいが含まれています。あなたが数えるときに余分なチャーを得ることを説明します。

あなたはカウント右側(右手の改行を削除)するためにrstrip("\n")を使用することができます。それは回線終端文字が含まれているため

from sys import stdin 
for line in stdin: 
    print(len(line.rstrip("\n"))) 

(結果に1をsubstractingも動作することに注意してください)

関連する問題