2016-06-07 9 views
0

내가 가진 몇 이와 같은 "긴"라인 :많은 문자열을 큰 문자열로 전달/포맷하는 가장 효율적이고 읽기 쉬운 방법은 무엇입니까?

content = "<!DOCTYPE html>\n<html>\n<head>\n <meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\n <title>{0} - {1}</title>\n <link rel=\"stylesheet\" type=\"text/css\" href=\"{3}/{2}.{4}\" />\n</head>\n<body>\n <!-- layout... -->\n <script type\"text/javascript\" src=\"{5}/{2}.{6}\"></script>\n</body>\n</html>\n".format(settings["app.name"], ncc, name, settings["dir"]["static.style"], settings["lang.style"], settings["dir"]["static.script"], settings["lang.script"]) 

그냥 당신이 상당히 크다는 것을 말해 그것을 읽고/또는 몇 가지 방법으로 어려운 그 수와 같은 라인에보고하여 알다.

대용량 문자열에 많은 값을 동적으로 삽입하는 더 효율적이고 읽기 쉬운 방법이 있습니까?

+0

당신은 jinja2 또는 mako를 살펴 봐야합니다 ... 문자열을 위해 특별히 설계된 것이 아니라 동적 인 html 페이지/보고서를 작성하기위한 것입니다. –

+0

@Dot_Py 내가 그들을 들여다 볼 제안을 주셔서 감사합니다. –

답변

1

또 다른 옵션은 할 것이다 : 그

content = (
    "<!DOCTYPE html>\n<html>\n<head>\n " 
    "<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\n" 
    " <title>{0} - {1}</title>\n " 
    "<link rel=\"stylesheet\" type=\"text/css\" href=\"{3}/{2}.{4}\" />\n</head>\n<body>\n" 
    " <!-- layout... -->\n " 
    "<script type\"text/javascript\" src=\"{5}/{2}.{6}\"></script>\n</body>\n</html>\n" 
).format(
    settings["app.name"], ncc, name, settings["dir"]["static.style"], 
    settings["lang.style"], settings["dir"]["static.script"], 
    settings["lang.script"] 
) 

참고가 각 행의 끝에 ,이 없습니다.

그러나 HTML을 생성하는 가장 좋은 방법은 아마도 템플릿 프레임 워크를 사용하는 것입니다. jinja, mako ...

+0

답변 해 주셔서 대단히 감사합니다. 귀하가이 작업을 수행 할 수 있는지 몰랐습니다. +1 나는 그 시간과 노력에 정말로 감사드립니다. –

+0

plus1 for jinja2/mako 옵션 –

0

목록에 문자열을 넣은 다음 ' '.join(list)과 같이 조인을하면됩니다. 이것은 단순 연결보다 훨씬 빠릅니다. 여기

list = ["The quick brown", "fox"] result = " ".join(list)

는 차이를 볼 수 link 성능

+0

'.format'을 사용하면 원시 문자열이 더 빠를 것이라고 실제로 확인 했습니까? 그것은 ** 매우 **있을 법하지 않기 때문에. – freakish

+0

내가 제공 한 링크를 확인하십시오. 각각의 접근법에서 얼마나 많은 초당 얼마나 많은 concat을 볼 수 있습니다. – limbo

+0

네, 제공 한 링크는'+'연산자에 대해 말하고 있습니다. 그것은 절대적으로 여기에 해당하지 않습니다. 다음 번에 질문을주의 깊게 읽으십시오. – freakish

0

당신은 사용할 수있다 인 multiline string :

args = (settings["app.name"], ncc, name, settings["dir"]["static.style"], 
     settings["lang.style"], settings["dir"]["static.script"], 
     settings["lang.script"]) 

content = """\ 
<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
    <title>{0} - {1}</title> 
    <link rel="stylesheet" type="text/css" href="{3}/{2}.{4}" /> 
</head> 
<body> 
    <!-- layout... --> 
    <script type"text/javascript" src="{5}/{2}.{6}"></script> 
</body> 
</html>""".format(args) 
+0

답을 고맙게 생각합니다. +1 시간과 노력에 감사드립니다. –