【问题标题】:string formatting error in pythonpython中的字符串格式错误
【发布时间】:2012-02-26 06:13:58
【问题描述】:

这是一个时间紧迫的错误,否则我不会在这里发布,这也是我第一次尝试使用 django 和 python,所以请相应地考虑。

我遇到错误

%o format: a number is required, not str

在我的 django 应用程序中。它显示错误的地方:(我正在尝试创建一个消息字符串)

msg_donor = 'Dear %s,\nThank you for contributing to %s \'s fundraising campaign 
on Milaap.org. You\'ve made our day.\nRemember, since this is a loan, and not 
donation, 100% of your money will come back to you!\nYou will shortly receive 
your milaap login details. You can check who your money has gone to and track 
your repayments through your account. Be sure to sign up and check your account
regularly for updates.\n\n%s' % (d.name, c.fundraiser_name, regardsStr)

我没有在我的应用程序中编写任何 %o,我想知道这个错误是如何产生的??

【问题讨论】:

    标签: python-2.6 django-1.3


    【解决方案1】:

    你的字符串中有100% of your money% 是一个格式化字符。使用100%% of your money 将文字% 放在那里。

    (我有点惊讶 Python 跳过了 %o 之间的空格,但无论如何。)

    【讨论】:

    • 这真的很有趣。我以前从未意识到,但你是对的。两者之间有任何数量的空格显然是合法的。
    • 问题是我认为的其他问题,因为即使我评论该行将 # 放在它之前,它也会在同一行显示错误。
    • 嗯,这意味着您没有运行您认为正在运行的代码。 Django 缓存了一些东西吗?你需要告诉 Django 重新加载你的代码吗?
    • 但是在错误日志中它显示了我在该特定行之前放置的#
    • 是的,因为当遇到错误时,Python 会返回并在发生错误的行中查找源文件,并将该源代码行写入错误消息。但是,Python 不知道您更改了源文件,它仍在运行原始代码(仍然加载到您的 Web 服务器或 Django 或其他东西中)。
    【解决方案2】:

    问题是由您的字符串100% 中的杂散% 引起的

    当您进行字符串格式化时,您必须确保通过 %% 转义文字 %

    试试这个:

    msg_donor = """Dear %s,\nThank you for contributing to %s's fundraising campaign 
    on Milaap.org. You've made our day.\nRemember, since this is a loan, and not 
    donation, 100%% of your money will come back to you!\nYou will shortly receive 
    your milaap login details. You can check who your money has gone to and track 
    your repayments through your account. Be sure to sign up and check your account
    regularly for updates.\n\n%s""" % (d.name, c.fundraiser_name, regardsStr)
    

    【讨论】:

    • 问题是我认为的其他问题,因为即使我评论该行将 # 放在它之前,它也会在同一行显示错误。
    • 那么您没有发布足够的代码,因为您的示例引发了该错误,并且已由我的和@Greg 的答案修复
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    相关资源
    最近更新 更多