<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Nov 4, 2010, at 5:21 PM, Daniel da Silva wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><br>On several occasions I have run into code that will do something like the following with a multiline string:<br><br><br><blockquote style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;" class="gmail_quote">
<font face="courier new,monospace">def some_func():<br>    x, y = process_something()<br><br>    val = """<br><xml><br>  <myThing><br>    <val>%s</val><br>    <otherVal>%s</otherVal><br>
  </myThing><br></font></blockquote><blockquote style="margin-top: 0pt; margin-right: 0pt; margin-bottom: 0pt; margin-left: 0.8ex; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); padding-left: 1ex; position: static; z-index: auto; " class="gmail_quote"><font face="courier new,monospace"></xml><br>
""" % (x, y)<br><br>    return val<br></font></blockquote><div><br>To me, this is rather ugly because it messes up the indentation of some_func(). Suppose we could have a multiline string, that when started on a line indented four spaces, ignores the first four spaces on each line of the literal when creating the actual string?<br>
<br>In this example, I will use four quotes to start such a string. I think the syntax for this could vary though. It would be something like this:<br><br><blockquote style="margin-top: 0pt; margin-right: 0pt; margin-bottom: 0pt; margin-left: 0.8ex; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); padding-left: 1ex; position: static; z-index: auto; " class="gmail_quote">
<font face="courier new,monospace">def some_func():<br>    x, y = process_something()<br>    <br>    val = """"<br>    <xml><br>      <myThing><br>        <val>%s</val><br>        <otherVal>%s</otherVal><br>
      </myThing><br>    </xml><br>    """" % (x, y)<br><br>    return val</font><br></blockquote><div><br>That way, the indentation in the function would be preserved, making everything easy to scan, and the indentation in the output would not suffer.<br></div></div></blockquote><br></div><br><div><div>Why not use textwrap.dedent() to remove the common, leading whitespace:</div><div><br></div><div>      return dedent(val)</div></div><div><br></div><div><br></div><div>Raymond</div></body></html>