2013-01-07 27 views
0

我很新的蟒蛇,我在Groovy是我用""""写一些文本文件,我希望的方式。是否有蟒蛇任何等同于常规“””?

是否有任何在python相当于办法?

注意,我希望创建一个拥有超过20行的文件,所以我需要一些简单而优雅的方式。提前

感谢。

+0

Groovy的多行字符串的三引语实际上是从Python中借用的,所以如果这就是你要找的所有东西,那就完成了。如果你想要''''插值(它适用于Groovy中的''''和'“”“'),这是从sh借用的,而Python不会这么做,所以你需要使用其中一种选择。你以后? – abarnert

回答

6

目前尚不清楚究竟你问什么。

Groovy中多行字符串的使用'''"""的能力是直接从Python借用的,所以当然你可以在Python中做同样的事情。

但是,在Groovy中插入字符串使用""""的能力是从sh借用的,Python没有相同的功能。在Python中,'"字符串是相同的,并且都不插入。

Python的替代选择是format。这是对strunicode类,您可以用这样的方法:

s = """This is a string with a {variable} to fill in. 
Here's a {second} one 
""".format(variable="field", second="'nother") 

如果你写了一个文件,你会得到这样的:

This is a string with a field to fill in. 
Here's a 'nother one 

有很多变化。如果您想按位置而不是名称传递参数,则可以使用{0}而不是{variable} - 或者,对于按顺序插入的简单情况,只需使用{}(但要注意i18n)。您还可以将格式化信息放入(例如)打印repr(您可以键入以获取此值的种类),而不是str(可读的表示形式)。有关详细信息,请阅读上面链接的文档。

Python中也有一个较旧的机制,正在逐渐被淘汰,使用了% operator以及基于格式规范,但与C风格printf相当不同。例如:

s = """This is a string with a %(variable)s to fill in. 
Here's a %(second)s one 
""" % {"variable": "field", "second": "'nother"} 

此外,还有很多可用的变化;再次阅读上面链接的文档以获取详细信息。但是,实际上,如果您要处理大量旧代码,或者想从printf或Windows风格或类似格式进行转换,或者需要在Python 2.5或更低版本上运行,那么您只需要使用它。

如果这些都不足以满足您的需求,那么PyPI(以及ActiveState等的配方)上就有69,105个模块用于完成从接近perl-as-possible插值到模板化HTML页面的所有操作。

+0

感谢您的干净解释:) – sriram

1
f = open(name_of_file, 'w') 
f.writelines(list_of_lines_to_write) 
f.close() 

Ø r代替writelines(),使用f.write("""text_to_write_to_file""")

+1

'writelines'有点误导,因为它实际上不会写EOL ......(尽管一般来说,我同意“行”的列表通常比多行字符串更可读/可读) –

2

Python支持"""用于转义多行字符串。然而,变量替换不是立即可用的。

multi_line_variable = """This 
Is 
The 
Coolest 
Ever.""" 

如果您需要变量替换,你可以使用Python printf格式支持或使用模板库像神社或者Django的模板语言。

Python中的printf'格式:

>>> echo """Massive %s!""".format("string") 
"Massive string!" 
+2

首先,最好使用现代['format'](http://docs.python.org/2/library/string.html#formatstrings)方法,而不是旧式['%'运算符](http ://docs.python.org/2/library/stdtypes.html#string-formatting)其次,正如所写,答案听起来像是在暗示一个名为'printf'的函数,它不存在,而不是' %'操作符,并且将它称为“printf'格式支持”有点误导,因为它与'printf'有很大不同,导致混淆。 – abarnert