2010-08-13 41 views
1

我有一个变量x,我想要为其指定一个很长的字符串。由于字符串很长,我将它分成10个子字符串。我想这样做:如何在写入值时将值赋给变量需要多行(python)

x = 
    'a very long string - part 1'+ 
    'a very long string - part 2'+ 
    'a very long string - part 3'+ 
       ... 
    'a very long string - part 10' 

但事实证明这是一种无效的语法。什么是有效的语法?

+2

Duplicate:http://stackoverflow.com/questions/53162/how-can-i-do-a-line-break-line-continuation-in-python – 2010-08-13 14:10:19

回答

5

如果你想不带线的饲料的字符串,你可以

>>> x = (
... 'a very long string - part 1' + 
... 'a very long string - part 2' + 
... 'a very long string - part 3') 
>>> x 
'a very long string - part 1a very long string - part 2a very long string - part 3' 
>>> 

+运营商没有必要与string literals

2.4.2。 字符串文字串联

允许使用多个相邻的字符串文字(可能使用不同的引用约定),它们的含义与它们的连接相同。因此,“你好”“世界”等同于“helloworld”。此功能可用于减少所需的反斜线的数量,分割长串方便地跨排长队,甚至将注释添加到字符串的部分,例如:

re.compile("[A-Za-z_]"  # letter or underscore 
     "[A-Za-z0-9_]*" # letter, digit or underscore 
    ) 

您的情况:

>>> x = (
... 'a very long string - part 1' 
... 'a very long string - part 2' 
... 'a very long string - part 3') 
>>> x 
'a very long string - part 1a very long string - part 2a very long string - part 3' 
>>> 
+1

+1 '+'运算符 – igor 2010-08-13 14:15:27

4

通常Python会发现这一行继续到下一个,但如果它不把一个反斜杠在每行的末尾:

>>> x = 'a' + \ 
...  'b' + \ 
...  'c' 
>>> x 
'abc' 

或者使用标准语法像括号要清楚:

>>> x = ('a' + 
...  'b' + 
...  'c') 
>>> x 
'abc' 

您可以使用三重引号创建长字符串 - """ - 但请注意,任何新闻行都将包含在字符串中。

>>> x = """a very long string part 1 
... a very long string part 2 
... a very long string part 3 
... a very long string part 4""" 
>>> x 
'a very long string part 1\na very long string part 2\na very long string part 3\na very long string part 4' 
+0

谢谢。反斜杠是我正在寻找的 – snakile 2010-08-13 14:13:55

+0

@snakile我个人尽量避免使用反斜杠(并使用括号'()'或类似的名称),因为您可以毫不犹豫地添加新行而不必记住'\\'。另外,如果你在连续字符后面有空白,它会抛出错误。 – 2010-08-13 14:21:27

+0

你可以使用'\'来逃避''“''字符串中的换行符 – 2010-08-13 14:24:14