1

大文字に再フォーマットしようとすると{r[Name]}(元は titlecase: James)

元のコード

string = 'text {r[Name]} data'.format(r=row)

試み

string = 'text {r[Name].uppercase()} data'.format(r=row)

トレースバックを取得します:AttributeError: 'str' object has no attribute 'uppercase'

何か案は?どうもありがとう

4

1 に答える 1

4

uppercaseこれは、エラー メッセージが示すとおり、文字列には という名前のメソッドがないためです。

あなたはおそらく望んでいupperた。

ただし、実際にはこの方法でフォーマット文字列のメソッドを呼び出すことはできません。属性にアクセスできupperます (かっこを削除するだけです) が、 のようなものが得られますが'text <built-in method upper of str object at 0x12345678> data'、これはあまり役に立ちません。

それで、あなたはこれをどのようにますか?あなたはそうしない。format任意の信頼できないコードを誤って実行しにくくするために、意図的に制限されています。関数呼び出しが必要だと思う場合、それは通常、あまりにも派手になりすぎているという兆候であり、中間値を明示的に作成する必要があります。例えば:

string = 'text {name} data'.format(name=row['Name'].upper())
于 2013-10-17T00:09:17.627 に答える