2015-12-15 84 views
11

我有一些字符串需要连接,所产生的字符串会很长。我也有一些变量被连接起来。在python中多行连接字符串

如何组合两个字符串和变量,使结果为多行字符串?

以下代码将引发错误。

str = "This is a line" + 
     str1 + 
     "This is line 2" + 
     str2 + 
     "This is line 3" ; 

我已经试过这也

str = "This is a line" \ 
     str1 \ 
     "This is line 2" \ 
     str2 \ 
     "This is line 3" ; 

请建议的方式来做到这一点。

+1

为什么你有'前面$'字符您字符串......这些都不是有效的python变量名称。 –

+0

你使用2.x或3哪个python? – ipinak

+0

@ipinak python 2.7.6 – user3290349

回答

17

有几种方法。一个简单的解决方案是添加括号:

strz = ("This is a line" + 
     str1 + 
     "This is line 2" + 
     str2 + 
     "This is line 3") 

如果你想在一个单独的行每个“行”,你可以添加换行符:

strz = ("This is a line\n" + 
     str1 + "\n" + 
     "This is line 2\n" + 
     str2 + "\n" + 
     "This is line 3\n") 
1

我会添加一切我需要连接到一个列表,然后加入一个换行符。

my_str = '\n'.join(['string1', variable1, 'string2', variable2]) 
+1

这不会解决我的目的。因为我正在写一个脚本将采用一个变量名并为其生成一个getter和setter方法。我想用sae格式编写。 – user3290349

+1

@ user3290349这解决了您提出的问题,并且有扩展空间。如果你想要它解决不同的目的,请确保你的问题中陈述了目的。 –

+0

@ user3290349在python中,不需要getter和setters。我建议看一下python的'@ property'装饰器。 https://docs.python.org/2/library/functions.html#property –

5

Python是不是PHP,你有没有需要的变量名前放$

a_str = """This is a line 
     {str1} 
     This is line 2 
     {str2} 
     This is line 3""".format(str1="blabla", str2="blablabla2") 
+0

这将包括每行的前导空白,这与当前代码的不同。 –

+0

由于提供的初始代码无效,因此我没有考虑这一点。 –

+0

Btw ...删除领先的空格是在第1列的每一行开始 –