在多行中连接python中的字符串

在多行中连接python中的字符串,python,string,concatenation,Python,String,Concatenation,我有一些字符串要连接,结果字符串将相当长。我还有一些要连接的变量 如何组合字符串和变量,使结果成为多行字符串 下面的代码抛出错误 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" \ str

我有一些字符串要连接,结果字符串将相当长。我还有一些要连接的变量

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

下面的代码抛出错误

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" ;

请建议一种方法。

我会将连接到列表中所需的所有内容添加到列表中,然后在换行时加入列表

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

Python不是php,您不需要在变量名前加上
$

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

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

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")
使用格式化字符串的Python3解决方案 从Python 3.6开始,您可以使用所谓的“格式化字符串”(或“f字符串”)轻松地将变量插入字符串中。只需在字符串前面添加一个
f
,并将变量写入大括号(
{}
)中,如下所示:

要将长字符串拆分为多行,请使用括号(
()
)围绕部分(
)或使用多行字符串(由三个引号(
包围的字符串,而不是一个引号)

1.解决方案:括号 使用括号将字符串括起来,您甚至可以连接它们,而无需在以下两个字符串之间进行
+
登录:

a_str = (f"This is a line \n{str1}\n"
         f"This is line 2 \n{str2}\n"
         "This is line 3") # no variable here, so no leading f
好消息:如果行中没有变量,则该行不需要前导的
f

好消息:您可以在每行末尾使用反斜杠(
\
)而不是括号来存档相同的结果,但相应地,您应该选择括号作为行继续:

通过将表达式括在括号中,可以在多行上打断长行。应该优先使用括号,而不是使用反斜杠作为行继续

2.解决方案:多行字符串 在不需要显式插入
\n
的多行字符串中,Python为您解决了以下问题:

a_str = f"""This is a line
        {str1}
        This is line 2
        {str2}
        This is line 3"""
好消息:只需确保正确对齐代码,否则每行前面都会有前导空格


顺便说一下:您不应该调用变量
str
,因为这是数据类型本身的名称

格式化字符串的源:


为什么字符串前面有
$
字符……这些不是有效的python变量名。您使用的是2.x还是3?@ipinak python 2.7。6@RNar只是一个输入错误。习惯了php。您希望每一行都是一个单独的行吗(即:在
“这是一行”
,以及在
str1
之后是否应该有一个换行?)这无法解决我的目的。因为我正在编写一个脚本,该脚本将采用变量名并为其生成getter和setter方法。因此,我希望以sae格式编写。@user3290349这解决了您提出的问题,并有扩展的空间。如果您希望它解决不同的目的,请确保在问题。@user3290349在python中不需要getter和setter。我建议看一下python的
@property
decorator。这将包括每行的前导空格,这与当前代码的作用不同。我没有考虑到这一点,因为提供的初始代码不起作用。顺便说一句……删除前面的空格是从第1列开始的,别忘了开头和结尾的括号!这让我有点困惑。
a_str = f"""This is a line
        {str1}
        This is line 2
        {str2}
        This is line 3"""