1

外部ファイルに一行ずつ書き込んでいます。各行には、タブ区切り記号で区切られた 9 つの列があります。そのファイルの各行を分割して最後の列を出力すると、9 列の末尾に \n が追加されていることがわかります。私のコードは次のとおりです。

#!/usr/bin/python

with open("temp", "r") as f:
    for lines in f:
        hashes = lines.split("\t")
        print hashes[8]  

最後の列の値は、1 または 2 のいずれかの整数です。このプログラムを実行すると、得られる出力は次のようになります。

['1\n']
['2\n']  

1 つまたは 2 つだけ取得する必要があります。ここに「\n」が追加されているのはなぜですか?

問題を解決するために、次のチェックを試みました。

with open("temp", "r") as f:
    for lines in f:
            if lines != '\n':
                    hashes = lines.split("\t")
                    print hashes[8]  

これも機能していません。やってみif lines != ' 'ました。どうすればこれをなくすことができますか? 前もって感謝します。

4

4 に答える 4

7

(改行文字)を削除するには、行にストリップを使用してみてください。先頭と末尾の空白文字を削除します。\nstrip

with open("temp", "r") as f:
    for lines in f.readlines():
        if lines.strip():
            hashes = lines.split("\t")
            print hashes[8]  
于 2013-07-10T20:55:02.653 に答える
3

\n は改行文字です。これは、コンピューターが次の行にデータを表示することを認識する方法です。配列 hashes[-1] の最後の項目を変更して最後の文字を削除しても問題ありません。

于 2013-07-10T20:56:33.983 に答える
2

プラットフォームによっては、行末が複数の文字になる場合があります。Dos/Windows は"\r\n"、たとえば使用します。

def clean(file_handle):
    for line in file_handle:
        yield line.rstrip()

with open('temp', 'r') as f:
    for line in clean(f):
        hashes = line.split('\t')
        print hashes[-1]

先頭の空白を保持したいrstrip()場合に適しています。それと、ジェネレーター関数を使用して入力をクリーンアップします。

于 2013-07-10T21:23:18.997 に答える
1

各行には 9 つの列があるため、次の行が始まるため、8 番目のインデックス (9 番目のオブジェクト) には改行があります。それを取り除いてください:

print hashes[8][:-1]
于 2013-07-10T20:55:09.377 に答える