2017-10-24 18 views
4

次の構文はPython 3.6のf-stringでサポートされていませんか?私はF-文字列を結合線場合は、置換は発生しません。f-stringでライン結合がサポートされていませんか?

SUB_MSG = "This is the original message." 

MAIN_MSG = f"This longer message is intended to contain " \ 
      "the sub-message here: {SUB_MSG}" 

print(MAIN_MSG) 

リターン:

This longer message is intended to contain the sub-message here: {SUB_MSG} 

私はライン-加入削除する場合:

SUB_MSG = "This is the original message." 

MAIN_MSG = f"This longer message is intended to contain the sub-message here: {SUB_MSG}" 

print(MAIN_MSG) 

を期待どおりに動作しますが:

This longer message is intended to contain the sub-message here: This is the original message. 

PEP 498は、バックスラッシュ内F-文字列が明示サポートされていません。あなたがそれらを使用することはできませんので

エスケープシーケンスを

バックスラッシュは、例えば、 F-文字列の表現部分の内側に表示されない場合がありますF-文字列内の引用符 をエスケープします

>>> f'{\'quoted string\'}' 

は、ラインジョインF-STRの発現部分の内側」とみなされていしたがってサポートされていませんか?

+1

はない別の場所で、F-文字列*、*の表現部分内ではサポートされません。また、2番目の文字列リテラルに 'f'を追加するだけです。これは他の文字列接頭辞がどのように機能するかと一貫しています: 'len(r" \\ "" \\ ")== 3'。 – Ryan

答えて

6

あなたが、そうでなければ第2の1は通常の文字列として解釈され、それを動作させるためにf -stringsとして両方の文字列をマークする必要があります。

SUB_MSG = "This is the original message." 

MAIN_MSG = f"test " \ 
      f"{SUB_MSG}" 

print(MAIN_MSG) 

さて、この場合には、あなたもちょうど2番目の文字列を作ることができますこれは、F-文字列だけでなく、すべての文字列のプレフィックスに影響を与えることを

MAIN_MSG = "test " \ 
      f"{SUB_MSG}" 

注:

最初のものは補間するものが含まれていないため、F-文字列
2

(継続行に余分な「F」を注意してください)、これを試してみてください:

SUB_MSG = "This is the original message." 

MAIN_MSG = f"This longer message is intended to contain " \ 
     f"the sub-message here: {SUB_MSG}" 


print(MAIN_MSG) 
関連する問題