2014-02-04 2 views
3

Это звучит как новичок, но мне никогда не удавалось писать длинные строки в чистом виде на Python.Есть ли чистый способ писать многострочные строки в Python?

Вот 4 способа, которые я указал для этого. Никто из них мне не подходит.

def useless_func(): 
    # WRONG WAY A : string_A displays well but breaks the 80 char max PEP 8 recommandation 
    string_A = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." 

    # WRONG WAY B : string_B will create unwanted spaces between word 'sed' and 'do' when printed 
    string_B = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed\ 
     do eiusmod tempor incididunt ut labore et dolore magna aliqua." 

    # WRONG WAY C : string_C displays well but makes my code ugly because it breaks indentation 
    string_C = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed\ 
do eiusmod tempor incididunt ut labore et dolore magna aliqua." 

    # WRONG WAY D : string_D (triples quotes) has the same problem than string_B (unwanted spaces) 
    string_D = '''Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed 
     do eiusmod tempor incididunt ut labore et dolore magna aliqua.''' 

Я что-то не хватает?

ответ

5

Вы можете попробовать:

string = "sdfsdfsdfsdfsdf" \ 
     "sdfsdfsdfsdfs" 

И результат:

>>> string 
'sdfsdfsdfsdfsdfsdfsdfsdfsdfs' 

Тот же эффект может быть достигнут при использовании paranthesis вместо \ как @Nigel Тафнел отметил в своем ответе.

13

Я бы с:

def pr(): 
    # parentheses are for grouping and (as a bonus) for a pretty indentation 
    s = ("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" 
     "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb") 
    print s 

процитировать informal introduction to Python:

Два строковых литералов рядом друг с другом, автоматически объединяются; Первая строка выше также может быть написана словом = 'Помощь' 'A'; это работает только с двумя литералами, а не с произвольной строкой .

>>> s = 'a' 'b' 
>>> s 
'ab' 
>>> s = 'a''b' # space is not necessary 
>>> s 
'ab' 

Примечание стороны: конкатенация выполняется во время компиляции в байт-код:

>>> import dis 
>>> dis.dis(pr) 

0 LOAD_CONST    1 ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb') 

Вероятно, это конкатенация традиция исходит от C:

// prints "hello world" 
#include <stdio.h> 

int main(int argc, char **argv) { 
    printf("hello" " world"); 
    return 0; 
} 
+0

Это, безусловно, чистейшие пути между 5 :) –

0

Я думаю, что это сводится к тому, сколько экрана недвижимости вам предоставляется.

Вы можете использовать конкатенацию ..

string_a = "this is my content" 
string_a += "this is also my content" 
+0

Но это делает 2 операции вместо из 1 –

1

Что об использовании двойной или тройной единой цитаты:

>>> string_A = """Lorem ipsum dolor sit amet, 
... this is also my content 
... this is also my content 
... this is also my content""" 
>>> 
>>> print string_A 
Lorem ipsum dolor sit amet, 
this is also my content 
this is also my content 
this is also my content 
>>> 
Смежные вопросы