0

大きなログ ファイルから入力を取得するスクリプトがあります。このファイルには URL がエンコードされています。標準入力を使用して、ファイルからこれらの URL を取得しています。各 URL を個別に処理したい。

問題は、URL 内の各文字に分割された単一の URL を取得するときです。''.join(something) を実行すると、処理後に文字が取得されます。

例えば

for line in sys.stdin:
    line = line.strip()
    line1 = ''.join(line)

私もURLの全文字を集めてから参加してみました。それでも同じ結果。

私が得たサンプル:

ファイルからの入力: "www.cnn.com" sys.std および処理後の出力: ['w','w','w','.','c','n','n','. ','c','o','m']

リストが表示されるのは、私がそうするからです。それ以外の場合は、sys.stdin から www.cnn.com を取得します。しかし、基礎となる構造は出力と同じです。

私が欲しいのは:ファイルからの入力:「www.cnn.com」出力:「www.cnn.com」(これは1つの文字列である必要があります。個々の文字の文字列ではありません)

ありがとう

4

1 に答える 1

1

stdin 入力が文字化けしている可能性があると思います。次のスクリプトを検討してください。

#stdin.py
import sys
for line in sys.stdin:
    print line.strip()

次に、パイプ入力を期待どおりに機能させます。

$ echo -e "www.cnn.com\nwww.test.com" | python stdin.py 
www.cnn.com
www.test.com

文字列を呼び出すlist()と、文字ごとに分割されます。

>>> list("test")
['t', 'e', 's', 't']

おそらくやりたいことは、入力全体を読み取ってから、次のように行に分割することだと思います。

import sys
lines = sys.stdin.read().split()
print lines

それを実行すると、次のようになります。

$ echo -e "www.cnn.com\nwww.test.com" | python stdin.py 
['www.cnn.com', 'www.test.com']
于 2012-08-23T16:24:13.583 に答える