1

私はプログラミングを始めたばかりなので、ちょっと初心者です。

Pythonを使用して.txtテーブルから列を削除しようとしています。すべての列はタブで区切られています。これは例の行です:

100226.SCO0401  1   440 COG0001 glutamate-1-semialdehyde 2,1-aminomutase

4番目のタブ(「グルタミン酸-1-セミアルデヒド2,1-アミノムターゼ」の部分)の後の行のすべてのテキストを削除したいと思います。

この問題を回避するためにcsvをインポートする人を見かけましたが、次のような単純なことを考えていました。

def remove(infilename, outfilename):
    # Open original file and output file
    infile = open(infilename, 'rt')
    outfile = open(outfilename, 'wt')

    # Read lines and remove annotation
    for line in infile:
        outfile.write(line['**everything-until-the-fourth-tab**']

    # Close files
    infile.close()
    outfile.close()

大胆な部分は今の私の問題です。助言がありますか?前もって感謝します。

4

2 に答える 2

2

.split('\t')行のエントリを配列に分割するために使用します。[:4]次に、最初の4つの要素のみを保持したまま、配列をスライスできます。最後に、次のコマンドで再度参加します'\t'.join

for line in infile:
     columns = line.split('\t')
     columns = columns[:4]
     outfile.write('\t'.join(columns))

ワンライナーとして:

for line in infile:
     outfile.write('\t'.join(line.split('\t')[:4]))
于 2012-06-27T14:08:28.100 に答える
0

csvモジュールを使用することが最も簡単な解決策である可能性があることを提出します。

with open(infilename, 'rb') as infile, open(outfilename, 'wb') as outfile:
    writer = csv.writer(outfile, delimiter='\t')
    for row in csv.reader(infile, delimiter='\t'):
        writer.writerow(row[:4])
于 2012-06-27T14:31:48.857 に答える