

以下のコードは指定のテキストファイル (ave.txt) を読み込み、平均気温を出すプログラムです。

**現状のコード:**

[code]

    path = "ave.txt"
    sum=0.0
    a=0
    with open(path,"r") as f:
        for l in f:
            l=l.strip()
            b= l.split(',')
            if len(b)==1:
                name=(b[0].strip('"'))
            if len(b) == 2:
                sum += float(b[1].strip('"'))
                a+=1
    
    print(f"{name}の平均気温は{sum/a}度です")
    
[/code]

**ave.txt**

[code]

    "東京"
    "1月","-3.6"
    "2月","-3.1"
    "3月","0.6"
    "4月","7.1"
    "5月","12.4"
    "6月","16.7"
    "7月","20.5"
    "8月","22.3"
    "9月","18.1"
    "10月","11.8"
    "11月","4.9"
    "12月","-0.9"
    
[/code]

ファイルを読み込んで、平均気温を出すプログラムです。  
そこで、この式の `b` を表示するとこうなっています。

**b の表示結果:**

[code]

    ['"東京"']
    ['"1月"', '"-3.6"']
    ['"2月"', '"-3.1"']
    ['"3月"', '"0.6"']
    ['"4月"', '"7.1"']
    ['"5月"', '"12.4"']
    ['"6月"', '"16.7"']
    ['"7月"', '"20.5"']
    ['"8月"', '"22.3"']
    ['"9月"', '"18.1"']
    ['"10月"', '"11.8"']
    ['"11月"', '"4.9"']
    ['"12月"', '"-0.9"']
    
[/code]

この状態から以下の状態にしたいのですが、どうすればよいでしょうか？

**期待する表示結果:**

[code]

    1月：-3.6度↩
    2月：-3.1度↩
    3月：0.6度↩
    4月：7.1度↩
    5月：12.4度↩
    6月：16.7度↩
    7月：20.5度↩
    8月：22.3度↩
    9月：18.1度↩
    10月：11.8度↩
    11月：4.9度↩
    12月：-0.9度↩
    
[/code]

'""'を消して、,の代わりに:を入れたいです。  
表示するのは、月と気温だけで、一行目の東京は表示しません。


CC BY-SA 4.0
2022-07-03T03:42:19.307
89731
2022-07-03T07:58:35.847
2022-07-03T06:27:48.750
53208
53208
question
python
python ファイルの読み込み


拡張子は`.txt`ですが、データ内容的には`CSV`の形式に沿っているようですね。

せっかくなので基本的な書き方だけの多数の行で実現するよりも、標準で用意されている[csv](https://docs.python.org/ja/3/library/csv.html)モジュールを使うことも考えた方が良いでしょう。

こんな風に出来ます。

[code]

    import csv
    path = 'ave.txt'
    #### sum = 0.0
    #### a = 0
    with open(path, 'r', newline='', encoding='utf-8') as csvfile:
        spamreader = csv.reader(csvfile, delimiter=',', quotechar='"')
        name = next(spamreader)[0]
        for row in spamreader:
            #### sum += float(row[1])
            #### a += 1
            print(f'{row[0]}：{row[1]}度')
    
    #### print(f"{name}の平均気温は{sum/a}度です")
    
[/code]

元のソースの「期待する表示結果」に必要ない部分は`####`でコメントアウトしています。  
また表示結果の方は全角のコロン`：`のようなので、print()ではそちらを指定しています。

`encoding=`はファイルの内容に従って変更してください。  
`delimiter=`や`quotechar=`はデフォルトの値と同じなので指定しなくても良いのですが、参照ページの`短い利用例:`では変更して使用していたので元に戻して明記しています。


CC BY-SA 4.0
2022-07-03T07:58:35.847
89735
2022-07-03T07:58:35.847
26370
89731
answer