0

我对python很陌生。我来自 groovy,我用""""我希望的方式将一些文本写入文件。

python中有没有等效的方法?

请注意,我想创建一个超过 20 行的文件。所以我需要一些简单而优雅的方式。

提前致谢。

4

3 回答 3

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 还有一个较旧的机制,正在逐步淘汰,它使用%运算符和基于但与 C-style 完全不同的格式规范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上有 69,105 个模块(以及 ActiveState 上的配方等)可以完成从尽可能接近 perl 的插值到模板化 HTML 页面的所有工作。

于 2013-01-07T07:12:25.993 回答
2

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

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

如果需要变量替换,可以使用 Python 的printf格式支持或使用 Jinja 或 Django 模板语言等模板库。

Python 'printf' 格式:

>>> echo """Massive %s!""".format("string")
"Massive string!"
于 2013-01-07T06:50:51.017 回答
1
f = open(name_of_file, 'w')
f.writelines(list_of_lines_to_write)
f.close()

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

于 2013-01-07T06:50:32.847 回答