2016-03-24 18 views
-1

str.formatmy_xpathの私のアプリケーションで何が問題になっていますか?str.format()関数に複数の文字列を渡す方法

def look_for(thing, value): 
    my_xpath = "//h2[. = '{thing_placeholder}']/following::table//td[. = '{value_placeholder}']" 
    my_xpath.format(thing, value) 
    return my_xpath 

look_for("MyThing", "MyValue") 

...それは動作しませんが、代わりにスローmy_xpathがWeb要素を見つけるために適用されるKeyError

それとも私が代わりにこのバリアントをしようとした場合、それはKeyError例外文句ないですが、私はNone背中を取得しています:

def look_for_v2(thing, value): 
    my_xpath = "//h2[. = '{thing_placeholder}']/following::table//td[. = '{value_placeholder}']" 
    my_xpath.format(thing_placeholder = thing, value_placeholder = value) 
    return my_xpath 

look_for_v2("MyThing", "MyValue") 
+0

..あなたの第二の方法が正しかったということよりも、あなたは、 –

+0

[OK]をクリックして関数でreturn文が欠落しているだけのために指し示すこと –

答えて

1

文字列が不変の場合、str.formatは新しい文字列を作成して返しますが、元の文字列は変更されません。新しい文字列にフォーマットを割り当てて、それを返す必要があります。他の

my_new_xpath = my_xpath.format(thing_placeholder = thing, value_placeholder = value) 
+0

お手伝いをありがとうございます。はい、それは今かなり後ろを振り返って明らかです。例を見て、それらが完全な行であると仮定したことに対する私のせいです。 – Winterflags

1

は、我々が通過しなければならないのドキュメントによるとstr.format()

のドキュメントをチェックアウトキー - 値ベースの引数、または辞書:

str.format(*args, **kwargs)

my_xpath = "//h2[. = '{thing_placeholder}']/following::table//td[. = '{value_placeholder}']" 
new_xpath = my_xpath.format({'thing_placeholder':thing, 'value_placeholder': value}) 
+0

@JoranBeasleyのTHXのしてきたかもしれない「バックなしを取得していない」と思いましたアウト –

関連する問題