

下記のようなテキストファイルがあるとします(簡易化しました)  
`ABC0001,ABC0001,ABC0002` となっている、1個目の `.` の次の文字列のでてくる回数をそれぞれカウントしたいです。  
元ファイルだと右側に `ABC0001` などがでてくる可能性もあるので、場所を指定したうえのものだと助かります。

**元ファイルの例:**

[code]

    100111.ABC0001 100111.ABC2210 0 0 0 0 0 0 0 0 0 0 0 0 200 200
    100111.ABC0001 100111.ABC2250 0 0 0 0 0 0 0 0 0 0 0 0 200 200
    100111.ABC0002 100111.ABC3258 0 0 0 0 0 0 0 0 0 0 0 0 200 200
    
[/code]

**期待する結果例:**

[code]

    ABC0001 2
    ABC0002 1
    
[/code]


CC BY-SA 4.0
2023-01-19T08:37:14.453
93448
2023-01-20T05:07:05.813
2023-01-19T12:28:49.217
3060
55971
question
python
任意の数字が出てくる回数をそれぞれカウントしたい


細かい条件やエラー処理などは考えてませんが、ざっくりとした感じで書いてみました

[code]

    $ cat a.py
    import re
    import pprint
    
    pattern = '[^\.]+\.([^\s]+)\s.*'
    counts = {}
    
    with open('a.txt') as f:
      for line in f:
        key = re.match(pattern, line).group(1)
        counts.setdefault(key, 0)
        counts[key] += 1
    
    pprint.pprint(counts)
    
[/code]

入力データをファイル 'a.txt' とした場合以下のような実行結果になります。

[code]

    $ python a.py
    {'ABC0001': 2, 'ABC0002': 1}
    
[/code]


CC BY-SA 4.0
2023-01-19T09:08:36.403
93449
2023-01-19T09:08:36.403
53097
93448
answer


入力ファイルの名前を `input.dat` だとして、以下。

[code]

    import io
    import re
    from collections import Counter
    
    with open('input.dat', 'r') as f:
        count = [*Counter(re.split(r'[ .]', l)[1] for l in f).items()]
    
    print(count)
    
    # [('ABC0001', 2), ('ABC0002', 1)]
    
[/code]


CC BY-SA 4.0
2023-01-19T09:12:30.183
93450
2023-01-20T05:07:05.813
2023-01-20T05:07:05.813
47127
47127
93448
answer


以下の方法でもできます。  
ファイル名'data.txt'

[code]

    count_d = {}
    with open('data.txt') as f:
        for l in f:
            key = l.split(".",1)[1].split(" ",1)[0]
            count_d[key] = count_d.get(key, 0) + 1
    print(count_d)
    
    # {'ABC0001': 2, 'ABC0002': 1}
    
[/code]


CC BY-SA 4.0
2023-01-19T16:14:38.580
93465
2023-01-19T16:14:38.580
55497
93448
answer