Python 初心者で生物系のデータ解析を行っています。実際扱うファイルはもっと大きいです。
以下のようなデータ(input.txt)があり">"で始まっていない行を取得、5文字ずつで区切って、文字列の出現パターンをカウントしたいです(重複のカウント)。スクリプト自体はかけたのですが、出力の仕方で困っています。ちなみにendから1を引くのは後ろの改行も1文字とされていて、これをカウントしない方法が不明なのでとりあえず1を引いています。
自分がしたい出力は単純に1列目にキー、2列目に出現回数を表示したいです。余分な[]や:などを出力せずに表示させるにはどうしたらいいでしょうか?
most_common等を使ったり,出力前にintに変換してみたりいろいろ試したのですがわかりません。よろしくお願いします。
input.txtの中身
data1
1234567
data2
ab12345
作成したスクリプト
import pprint import collections seq = [] with open('input.txt') as file: for l in file: if '>' in l: continue x = len(l) end = x - 1 last = 5 start = 0 while last <= end: #print(l[start:last]) デバッグ用 seq.append(l[start:last]) last += 1 start += 1 counter = collections.Counter(seq) s = pprint.pformat(counter, width=20) print(s) #期待している出力 # 12345 1 # 12345 2 # 34567 1 # ab123 1 # b1234 1 #実際の出力 # Counter({'12345':2, # '23456': 1, # '34567': 1, # 'ab123': 1, # 'b1234': 1})
私自身、pythonをちゃんと理解してない節があり、説明がわかりにくいところがあり申し訳ありませんがどなたかご教授いただけると幸いです。よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/22 05:40