3

私はPythonが初めてで、最も単純なことをしているときにエラーが発生し続けます。

正規表現で変数を使用して、それを * に置き換えようとしています

次のようにすると、「TypeError: 文字列のフォーマット中にすべての引数が変換されるわけではありません」というエラーが表示され、その理由がわかりません。これはとても簡単なはずです。

import re
file = "my123filename.zip"
pattern = "123"
re.sub(r'%s', "*", file) % pattern

エラー: トレースバック (最新の呼び出しが最後): ファイル ""、1 行目、? TypeError: 文字列のフォーマット中にすべての引数が変換されるわけではありません

任意のヒント?

4

2 に答える 2

6

あなたが問題にしているのはこの行です:

re.sub(r'%s', "*", file) % pattern

あなたがしているのは、文字列からのテキスト内のすべての出現箇所%sをに置き換えることです(この場合、組み込みオブジェクトのシャドウを避け、作業内容をより明確にするために、変数の名前を変更することをお勧めします)。次に、(既に置き換えられた)テキストのを。に置き換えようとしています。ただし、表示 につながるフォーマット修飾子は含まれていません。基本的には次と同じです。*filefilenamefile%spatternfileTypeError

'this is a string' % ("foobar!")

同じエラーが発生します。

おそらく必要なのは、次のようなものです。

re.sub(str(pattern),'*',file)

これは、次とまったく同じです。

re.sub(r'%s' % pattern,'*',file)
于 2013-02-07T01:26:21.093 に答える
0

試してみre.sub(pattern, "*", file)ますか?reまたは、完全にスキップして、単に実行することもできますfile.replace("123", "*")

于 2013-02-07T01:21:35.877 に答える