私は、与えられた接頭辞を持つすべてのファイルを見つけ出す小さなプログラムを書いていました。この例では'spam'
と言うと、フォルダ内に番号を付け、ギャップを埋めるために後続のフォルダの名前を変更します。以下は、正規表現を使用してファイルを検索し、その名前を変更し、プログラムの一部を示しています正規表現とファイル名の変更
prefix = 'spam'
newNumber = 005
# Regex for finding files with specified prefix + any numbering + any file extension
prefixRegex = re.compile(r'(%s)((\d)+)(\.[a-zA-Z0-9]+)' % prefix)
# Rename file by keeping group 1 (prefix) and group 4 (file extension),
# but substituting numbering with newNumber
newFileName = prefixRegex.sub(r'\1%s\4' % newNumber, 'spam006.txt')
私は上から期待していた何spam005.txt
だったが、代わりに私が@5.txt
を得た私はr'%s%s\4' % (prefix, newNumber)
を使用することができます考え出しました代わりに意図したとおりに動作しますが、なぜこのエラーが発生しているのか理解したいと思います。それはre.compile()
の間に使用された%s
と関係がありますか?