用于将长字符串写入 Python 中的文件的干净代码
Clean code for writing long strings to file in Python
我知道在 Python 中,将代码拆分为多行的首选机制是使用带有括号等结构的隐式延续。或者,也可以使用反斜杠。
但是,我遇到了长写语句(示例代码)的问题:
f1 = some_file_name
with open(f1,'w') as o:
# file in csv format
# want to write a header before data
o.write("column1 header,column2 header,column3 header,column4 header,etc")
如果我断线,Python 抱怨 ('EOL while scanning string literal'):
o.write("column1 header,column2 header,column3 header, # complains
column4 header,column5 header")
如果我使用反斜杠并尝试保持相同的缩进级别,额外的 space 将包含在文件头中:
o.write("column1 header,column2 header,column3 header,\
column4 header,column5 header")
# file contents:
column1 header,column2 header,column3 header, column4 header,column5 header
现在我有一个反斜杠,剩余的字符串从下一行的最开始开始,但是这样代码看起来很乱。
我可能遗漏了一些非常明显的东西,但是在像这样写入文件时处理长字符串的首选方法是什么?
Python 可让您执行以下操作:
o.write("column1 header,column2 header,column3 header,"
"column4 header,column5 header")
这将通过连接这些字符串创建一个没有任何换行符的字符串。
反斜杠无法提供正确结果的原因是字符串中的空格很重要:
o.write("column1 header,column2 header,column3 header,\
column4 header,column5 header")
^^^^^
These spaces end up in the string.
我知道在 Python 中,将代码拆分为多行的首选机制是使用带有括号等结构的隐式延续。或者,也可以使用反斜杠。
但是,我遇到了长写语句(示例代码)的问题:
f1 = some_file_name
with open(f1,'w') as o:
# file in csv format
# want to write a header before data
o.write("column1 header,column2 header,column3 header,column4 header,etc")
如果我断线,Python 抱怨 ('EOL while scanning string literal'):
o.write("column1 header,column2 header,column3 header, # complains
column4 header,column5 header")
如果我使用反斜杠并尝试保持相同的缩进级别,额外的 space 将包含在文件头中:
o.write("column1 header,column2 header,column3 header,\
column4 header,column5 header")
# file contents:
column1 header,column2 header,column3 header, column4 header,column5 header
现在我有一个反斜杠,剩余的字符串从下一行的最开始开始,但是这样代码看起来很乱。
我可能遗漏了一些非常明显的东西,但是在像这样写入文件时处理长字符串的首选方法是什么?
Python 可让您执行以下操作:
o.write("column1 header,column2 header,column3 header,"
"column4 header,column5 header")
这将通过连接这些字符串创建一个没有任何换行符的字符串。
反斜杠无法提供正确结果的原因是字符串中的空格很重要:
o.write("column1 header,column2 header,column3 header,\
column4 header,column5 header")
^^^^^
These spaces end up in the string.