2

いくつかのファイルからいくつかの情報を抽出して別のファイルに渡すスクリプトを Python で作成しています。

クラスの要素のリストを含む 2 つの辞書があり、リストの各要素を .csv ファイルに書き込みたいと考えています。

ファイルにデータを書き込もうとすると、奇妙な方法で表示されます。データを次のように表示したい:

Sample_3 45526536 7010285 31195850 7320401 45500691 7186449 31021951 7292291  
Sample_1 48885783 7715654 33474067 7696062 48857972 7907873 33282945 7667154

しかし、代わりに次の結果が得られました。

 Sample_3 ['45526536'] ['7010285'] ['31195850'] ['7320401'] ['45500691'] ['7186449'] ['31021951'] ['7292291']
 Sample_1 ['48885783'] ['7715654'] ['33474067'] ['7696062'] ['48857972'] ['7907873'] ['33282945']['7667154']

数字に [´´] を追加する理由を知っている人はいますか? [' '] を削除するための非常に簡単な方法を作成しようとしましたが、ファイルに何も出力しません。

def correct_str(value):  
    new= str(value).strip("['")
    final= str(new).strip("']")
    return final

ディクショナリに要素を追加するコードは次のとおりです。ディクショナリは stat_dict_l_u というグローバル変数で、名前はディクショナリのキーです。この場合、Sample_1 と Sample_2 です。リストの値は、数値を含むリストです。ファイルから取得しました。おそらく私の問題は、辞書に値を追加する方法にあると思います。

def processNumbersLeft(name,list_values):

    list_reads=[]


    for value in list_values:
        print value.total_reads
        list_reads.append(value.total_reads)



    list_aligned_once=[]
    for value in list_values:

        n=re.split(" ",value.aligned_once)
                 list_aligned_once.append(n[0])


    list_failed=[]
    for value in list_values:

        n=re.split(" ",value.failed)
        list_failed.append(n[0])

    list_aligned_several=[]
    for value in list_values:

        n=re.split(" ",value.aligned_several)

        list_aligned_several.append(n[0])



    stat_elem=Statistics(list_reads,list_aligned_once,list_failed,list_aligned_several)

    stat_dict_l_u[name]=stat_elem

ありがとうございました!

4

2 に答える 2

4

このケースを使用してみてください:

def to_file(d):
    return '\n'.join("%s %s" % (key, ' '.join(map(str, values))) for key, values in d.items())

使用:

>>> print to_file({'Sample_1': [1,2,3], 'Sample_2': [4,5,6]})
Sample_1 1 2 3
Sample_2 4 5 6

csv ファイルで多くの作業が必要な場合は、便利なモジュールcsvを使用してください。使用例:

import csv
with open('eggs.csv', 'wb') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ', quoting=csv.QUOTE_MINIMAL)
    for key, values in d.items():
        spamwriter.writerow([key] + values)

この例は、必要なことを正確に実行します。詳細については、ドキュメントを参照してください。

于 2012-10-09T13:14:26.610 に答える
2

データをファイルに書き込むと、オブジェクトが文字列に変換されます。['']表記は、データがリストに含まれていることを示します。

各エントリvalue[0]の代わりに書きたい。value

説明する:

>>> value = ['foobar']
>>> value
['foobar']
>>> str(value)
"['foobar']"
>>> value[0]
'foobar'
于 2012-10-09T13:13:49.173 に答える