2012-08-11 101 views
1

我已经遇到了一些代码,看起来是这样的:Python字符串符号

foo = r""" 
     Hello 
     How are you 
     Goodbye 
     """ 

本公约只是一个简单的方法来保持字符串的格式,如果它是在做出可能导致问题正常的方式?我试过在线搜索,但问题的本质并不适合搜索术语。

+2

字符串封闭通过三元组引号可以跨越多行,字符串中的新行保留。 – ladaghini 2012-08-11 10:20:15

回答

4

这是一个triple-quoted python string literal。您也可以使用'''。 (前面的r表示文字是原始字符串;例如,大多数转义序列都被忽略;这适用于单引号和三引号字符串)。

这些字符串保存换行,不像单引号字符串,在这里你必须使用\n换行符转义代码来代替:

>>> """Line one 
... Line two""" 
'Line one\nLine two' 

格式有用途的miriad。如果我需要定义一个多行不变,我经常使用开放三帖后反斜线具有非常可读的字符串字面来结束:

LOREM_IPSUM = """\ 
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 
""" 

然而,最常见的用法是作为一个docstring;函数,类或模块的第一个字符串文字会自动分配给该对象的__doc__属性,以便稍后由其他工具(例如pydocdoctests,特别是如果您遵循docstring conventions)轻松检索。按照约定,通常使用tripple-引用文字,哪怕只有一个在线文档的。

+0

这些也经常用于文档(docstrings)。 – orlp 2012-08-11 10:56:07

+0

加上,在OP的例子中它是一个原始字符串,即转义序列被禁用:_当一个'r'或'R'前缀存在时,字符串后面的字符不加改变,所有反斜杠都保留在串。_ – moooeeeep 2012-08-11 11:21:47

0

什么是“正常的方式”?当你想你的字符串跨越多行三重引号是有用的。正式的文档here