Joa*_*nge 5 python string formatting escaping string-formatting
我在网上找不到这个,但基本上我有这样的字符串:
s = "name={0},
address={1},
nickname={2},
age={3},
comments=
"""
{4}
"""
"
Run Code Online (Sandbox Code Playgroud)
我需要使用如下变量格式化此字符串:
s.format("alice", "N/A", "alice", 18, "missing person")
Run Code Online (Sandbox Code Playgroud)
我无法更改那里的三重引号,因为将使用我的字符串的程序期望,否则将无法工作.
如何正确声明/转义此字符串?
nie*_*mmi 10
您可以对字符串使用三重单引号:
s = '''name={0},
address={1},
nickname={2},
age={3},
comments=
"""
{4}
"""
'''
print s.format("alice", "N/A", "alice", 18, "missing person")
Run Code Online (Sandbox Code Playgroud)
输出:
name=alice,
address=N/A,
nickname=alice,
age=18,
comments=
"""
missing person
"""
Run Code Online (Sandbox Code Playgroud)
您可以使用以下方法转义字符串中的三引号,就像转义任何其他引号字符一样\:
s = """name={0},
address={1},
nickname={2},
age={3},
comments=
\"\"\"
{4}
\"\"\"
"""
Run Code Online (Sandbox Code Playgroud)
严格来说,你只需要逃避一个对的"角色---足以阻止三"""出现---但我觉得逃避所有三个使我的意图更加清晰.
后来...
sf = s.format("alice", "N/A", "alice", 18, "missing person")
print(sf)
print('----')
print(repr(sf))
Run Code Online (Sandbox Code Playgroud)
...生产:
name=alice,
address=N/A,
nickname=alice,
age=18,
comments=
"""
missing person
"""
----
'name=alice,\naddress=N/A,\nnickname=alice,\nage=18,\ncomments=\n"""\nmissing person\n"""\n'
Run Code Online (Sandbox Code Playgroud)
niemmi的答案有效,但前提是你在字符串中没有混合'''和"""三重引号.使用反斜杠转义引号字符始终有效.
我打印了一行破折号以突出显示s保留了最后三个转义引号字符和实际结束字符串的三重引号之间的换行符.要从文字中删除它:
s = """[as before...]
\"\"\"
{4}
\"\"\""""
Run Code Online (Sandbox Code Playgroud)
s文字的第二行和后续行必须与第一(左)列齐平.三引号字符串整齐地排列在缩进块内:
def indents_appear_in_string_literal():
# This looks good but doesn't work right.
s = """name={0},
address={1},
nickname={2},
age={3},
comments=
\"\"\"
{4}
\"\"\"
"""
sf = s.format("alice", "N/A", "alice", 18, "missing person")
print(sf)
print('----')
print(repr(sf))
return
Run Code Online (Sandbox Code Playgroud)
...将保留字面内的缩进:
name=alice,
address=N/A,
nickname=alice,
age=18,
comments=
"""
missing person
"""
----
'name=alice,\n address=N/A,\n nickname=alice,\n age=18,\n comments=\n """\n missing person\n """\n '
Run Code Online (Sandbox Code Playgroud)