有没有人理解这段代码以及如何将其更改为在同一行显示“sender write:message”而不是将其拆分为不同的行。如下图所示。我真的不明白为什么他们去了这种格式。
utils.py中的代码
def format_quote(sender, body):
"""
Wraps text at 55 chars and prepends each
line with `> `.
Used for quoting messages in replies.
"""
lines = wrap(body, 55).split('\n')
for i, line in enumerate(lines):
lines[i] = "> %s" % line
quote = '\n'.join(lines)
return ugettext(u"%(sender)s wrote:\n%(body)s") % {
'sender': sender,
'body': quote
}
这是使用以下内容的消息传递应用:https://github.com/arneb/django-messages
它只是看起来很可怕,我可以弄清楚如何使它看起来更好,任何帮助都将非常感激!
答案 0 :(得分:1)
这段代码只需要一些文本和发件人姓名:
'\n
来制作相当于文本的列而不是行)'> '
添加到每一行'someone wrote:\n'
添加到此文本>>> message = '1234567890 ' * 7
>>> message
'1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 '
>>> sender = 'john'
>>> sender
'john'
>>> wrap(message, 55)
'1234567890 1234567890 1234567890 1234567890 1234567890\n1234567890 1234567890 '
请注意\n
>>> lines = wrap(message, 55).split('\n')
>>> lines
['1234567890 1234567890 1234567890 1234567890 1234567890', '1234567890 1234567890 ']
>>> for i, line in enumerate(lines):
... lines[i] = "> %s" % line
...
>>> lines
['> 1234567890 1234567890 1234567890 1234567890 1234567890', '> 1234567890 1234567890 ']
>>> quote = '\n'.join(lines)
>>> quote
'> 1234567890 1234567890 1234567890 1234567890 1234567890\n> 1234567890 1234567890 '
>>> ret = u"%(sender)s wrote:\n%(body)s" % {
... 'sender': sender,
... 'body': quote
... }
>>> print(ret)
john wrote:
> 1234567890 1234567890 1234567890 1234567890 1234567890
> 1234567890 1234567890
我认为这段代码本身不是问题。可能功能被称为一堆次,产生如此丑陋的输出。