ノーブレークスペースを半角スペースに変換

フォルダ内の全ファイル名のノーブレークスペースを、半角スペースに置き換えるスクリプトです(Python 3):

import os

for fileName in os.listdir():
	newFileName = fileName.replace("\xa0", " ")
	os.rename(fileName, newFileName)

ノーブレークスペースとは

ノーブレークスペースとは、改行させないスペースのことで、見た目は通常の半角スペースと同じです。 UTF-8のテキストファイルをバイナリエディタで開くと、ノーブレークスペースは0xC2 0xA0であることが分かり、 半角スペースの0x20とは異なります。 Unicodeでは、U+00A0に該当し、上記ソースの"\xa0"はこれを指します。 HTMLでは、ノーブレークスペースを で表すことができ、 ウェブサイトから文字列を直接ファイル名にコピペすると、気づかないうちに、ファイル名にノーブレークスペースが含まれることがあります。

このノーブレークスペースがファイル名に含まれていると、 Windows 10では、ファイルを圧縮しようとすると、失敗します:

圧縮(zip形式)フォルダー エラー:
など圧縮フォルダーで使用できない文字が使われているため、・・・ファイル名・・・を圧縮できません。このファイルまたはディレクトリの名前を変更してください。

通常の半角スペースと見分けがつかないため、 どのスペースが問題なのか特定できません。 手動で解決する場合、全スペースを打ち直す必要があり、 ファイル数が多いと、時間がかかります。