前提・実現したいこと
普段は生物系の勉強をしておりプログラミングは始めたばかりの初心者中の初心者です。プログラミング用語などもほとんどわかりません。必要があり、次のような内容のファイルをPythonを使って処理しています。
#から始まるタイトル行と、それに続く大小文字のABCDの羅列をワンセットにして、それを繰り返しているだけのファイルです。
以下に書いているのは例であり、実際のファイルの内容とは異なります。
(ファイル例)
#1-9876543
AcddDCBACDcA....
#2-1234567
CbCbDaDDDb.....
#3
.....
この、それぞれの配列について、ABCDの数を大文字小文字を区別せず以下のようにカウントして出力したいのですが、どうしたらよいでしょうか。
(出力の目標例)
#1-9876543 A:20 B:31 C:4 D:7
#2-1234567 A:1 B:23 C:45 D:80
.....
発生している問題・エラーメッセージ
[1]
A:16
a:4
B:17
b:14
C:2
c:2
D:1
d:6
[2]
A:1
a:0
T:21
t:2
C:43
c:2
G:40
g:40
.....
というような出力が帰ってきます。
目標の出力のように、1、改行なしにする.2、タイトル行をそのまま出力したい.([1]の代わりに[#1-9876543])3、大文字と小文字を区別せずまとめ、A,B,C,Dの四つについて数えたい.という三つの要望があります。
該当のソースコード
Python
1file = open("ファイル名").read() 2lines = file.split('\n') 3from collections import Counter 4counts = [] 5last = Counter() 6for line in lines: 7 if line.startswith('#'): 8 if last: 9 counts.append(last) 10 last = Counter() 11 else: 12 last = last + Counter(line) 13counts.append(last) 14for line, count in enumerate(counts): 15 print([line]) 16 for alphabet in ('A', 'a', 'B', 'b', 'C', 'c', 'D', 'd'): 17 print(" {}: {}".format(alphabet, count[alphabet]))
試したこと
ネットで探したコードを試行錯誤してる状態で、上のコードも完全に理解してるとは言えないです。
補足情報(FW/ツールのバージョンなど)
丸三日ほどインターネット中を探しましたが、初心者にはほとんど理解できないものばかりでした。非常に難儀しています。どうかよろしくお願い致します。