在python中格式化大块文本的最佳方法是什么?我不是指格式化输出,而是为了可读性.我一直在尝试遵循python布局的指导原则,但我没有看到有关如何格式化大量文本的任何评论.
例如:
class GenerateCalendar(object):
def __init__(self):
super( GenerateCalendar, self ).__init__()
def getCalendarHeader( self ):
print """
BEGIN:VCALENDAR
PRODID:-//Atlassian Software Systems//Confluence Calendar Plugin//EN
VERSION:2.0
CALSCALE:GREGORIAN
X-WR-CALNAME;VALUE=TEXT:
X-WR-CALDESC;VALUE=TEXT:
"""
Run Code Online (Sandbox Code Playgroud)
大块文本看起来很糟糕,并没有缩进4个空格,因此很难阅读.
我想看到的是:
def getCalendarHeader( self ):
print """
BEGIN:VCALENDAR
PRODID:-//Atlassian Software Systems//Confluence Calendar Plugin//EN
VERSION:2.0
CALSCALE:GREGORIAN
X-WR-CALNAME;VALUE=TEXT:
X-WR-CALDESC;VALUE=TEXT:
"""
Run Code Online (Sandbox Code Playgroud)
但这会在输出的开头引入空白区域.
有关如何使其遵循python推荐布局的任何想法?我想保持它整洁,易于阅读.
是否可以在不对每行进行打印的情况下这样做?例如
def getCalendarHeader( self ):
print "BEGIN:VCALENDAR\n"
print "PRODID:-//Atlassian Software Systems//Confluence Calendar Plugin//EN\n"
print "VERSION:2.0\n"
print "CALSCALE:GREGORIAN\n"
print "X-WR-CALNAME;VALUE=TEXT:\n"
print "X-WR-CALDESC;VALUE=TEXT:\n"
Run Code Online (Sandbox Code Playgroud)
以上是我希望代码出现的方式,而不需要在每一行上进行打印.
MVC @Html.TextBoxFor(model => model.SomeNotNullableType)使用此帮助程序时,如果我在数据库中有一个不可为空的类型,则视图最终会在文本框中显示默认值.特别是在我的情况下,该字段采用整数,并在字段中设置默认值0.
我知道我可以用Javascript删除错误的0或者在html中设置默认值,但我希望有一种更"正确"的方法.我可以在我的模型中指定我不希望将默认视图放入文本框中(您不能将其设置为null,因为它不可为空).坚持真正的模型方法我想在模型/控制器中而不是在视图中修复它.
var p = "null"
var q = null;
(p == q) //false. as Expected.
p.replace(null, "replaced") // outputs replaced. Not expected.
p.replace("null", "replaced") //outputs replaced. Expected.
q.replace(null, "replaced") // error. Expected.
q.replace("null", "replaced") //error. Expected.
Run Code Online (Sandbox Code Playgroud)
为什么?是否更换之间无法区分"null"和null?
我问是因为我遇到了angularjs中的错误:
replace((pctEncodeSpaces ? null : /%20/g), '+');
Run Code Online (Sandbox Code Playgroud)
例如,如果某人的用户名是"null"且被用作url,则在任何$http呼叫中它将被替换为“ +” 。例如GET /user/null。
并不是说这种情况会经常发生,而是我很好奇为什么替换对待null和对待"null"同一件事。null在替换之前,replace会在其上执行.tostring 吗?这只是Java语言的怪癖吗?
我在IE和Chrome的实施中都对此进行了验证replace。