在python中使用`{somestring}`格式化字符串会导致python将字符串与字典赋值混淆

时间:2018-04-05 14:57:16

标签: python

我正在尝试格式化字符串以传递给os.popen(),因此我可以在awk中进行一些解析。我使用的是python 2.7.10。当我尝试格式化字符串时,python似乎认为我试图将新的键/值对分配给字典。

>>> path="xyz"
>>> string="awk {}".format(path)   #<--- This works as expected!
>>> string
'awk xyz'
>>> 
>>> string="awk 'BEGIN{FS=\"\t\"}{print $1}' {}"  #<--- This works, but not what I want
>>> string
'awk \'BEGIN{FS="\t"}{print $1}\' {}'
>>> 
>>> string="awk 'BEGIN{FS=\"\t\"}{print $1}' {}".format(path)  #<--- This fails b/c Python thinks I'm trying to do something with dictionaries?
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'FS="\t"'

如果string不打算进行格式化,那么如何格式化{}

1 个答案:

答案 0 :(得分:1)

https://docs.python.org/2/library/string.html#format-string-syntax

  

如果您需要在文字文本中包含大括号字符,则可以通过加倍来转义它:{{}}