質問: file_list[int(input("番号を選択:"))] return f_name ```
回答: 実行している環境はMacですか? 以下のURLにあるように、Unicodeの文字正規化には2種類あり、「正規形 C と正規形 D」といいます。 https://docs.python.jp/3/library/unicodedata.html#unicodedata.normalize MacOSでは、正規形 Dが採用され、カタカナの濁点、半濁点が別々の文字として扱われています。 file_list[i] の文字列の長さを取得すると、濁点部分が多くカウントされると思います。 (または、 `file_list[i].encode(utf-8)` と bytes型に変換して比べるとわかりやすいかもしれません) これらを統一化するには、2種類ある正規形のどちらかに揃える必要があります。 私は、 正規形 Cに揃えることが多いです。 Pythonには、 先に示したURLの標準ライブラリ `unicodedata` にnormalize関数で変換できます。 以下のように変換できます。 ``` import unicodedata filename = unicodedata.normalize('NFKC', file_list[0) ``` 'NFKC' という正を使って、互換分解を適用してから、標準分解を適用