Fed*_*rer 182 python string pep8
由于PEP8建议保持低于你的python程序的80列规则,我怎么能遵守长字符串,即
s = "this is my really, really, really, really, really, really, really long string that I'd like to shorten."
Run Code Online (Sandbox Code Playgroud)
我将如何将其扩展到以下行,即
s = "this is my really, really, really, really, really, really" +
"really long string that I'd like to shorten."
Run Code Online (Sandbox Code Playgroud)
Tod*_*odd 270
此外,因为相邻的字符串常量会自动连接,所以您也可以这样编码:
s = ("this is my really, really, really, really, really, really, "
"really long string that I'd like to shorten.")
Run Code Online (Sandbox Code Playgroud)
注意没有加号,我添加了示例格式之后的额外逗号和空格.
我个人不喜欢反斜杠,我记得在某个地方读过它的使用实际上已被弃用,而这种形式更明确.记住"明确比隐含更好".
我认为反斜杠不那么明确且不太有用,因为这实际上是在逃避换行符.如果有必要的话,就不可能在其后面添加行结束注释.可以使用连接的字符串常量来执行此操作:
s = ("this is my really, really, really, really, really, really, " # comments ok
"really long string that I'd like to shorten.")
Run Code Online (Sandbox Code Playgroud)
我使用谷歌搜索"python line length",它返回PEP8链接作为第一个结果,但也链接到另一个关于这个主题的好StackOverflow帖子:" 为什么Python PEP-8指定最大行长度为79个字符? "
另一个好的搜索短语是"python line continuation".
Mic*_*unn 103
隐式连接可能是最干净的解决方案:
s = "this is my really, really, really, really, really, really," \
" really long string that I'd like to shorten."
Run Code Online (Sandbox Code Playgroud)
编辑反思我同意托德建议使用括号而不是续行是出于他给出的所有原因更好.我唯一的犹豫是将括号中的字符串与元组混淆相对容易.
Zom*_*eep 15
我认为你问题中最重要的一个词是"建议".
编码标准很有趣.通常,它们提供的指导在编写时具有非常好的基础(例如,大多数终端无法在一条线上显示> 80个字符),但随着时间的推移,它们在功能上已经过时,但仍然严格遵守.我想你需要做的就是权衡"打破"特定建议与代码的可读性和可维护性的相对优点.
对不起,这不能直接回答你的问题.
ret*_*ile 12
你失去了一个空间,你可能需要一个续行字符,即.a \.
s = "this is my really, really, really, really, really, really" + \
" really long string that I'd like to shorten."
Run Code Online (Sandbox Code Playgroud)
甚至:
s = "this is my really, really, really, really, really, really" \
" really long string that I'd like to shorten."
Run Code Online (Sandbox Code Playgroud)
Parens也可以工作而不是续行,但你冒着有人认为你打算有一个元组并且忘记了一个逗号的风险.举个例子:
s = ("this is my really, really, really, really, really, really"
" really long string that I'd like to shorten.")
Run Code Online (Sandbox Code Playgroud)
与:
s = ("this is my really, really, really, really, really, really",
" really long string that I'd like to shorten.")
Run Code Online (Sandbox Code Playgroud)
使用Python的动态类型,代码可能以任何一种方式运行,但会产生与您不想要的结果不正确的结果.
如果你必须插入一个长字符串文字并希望 flake8 关闭,你可以使用它的shutdown 指令。例如,在测试例程中,我定义了一些假的 CSV 输入。我发现将其拆分为更多行会非常混乱,因此我决定添加 a ,# noqa: E501如下所示:
csv_test_content = """"STATION","DATE","SOURCE","LATITUDE","LONGITUDE","ELEVATION","NAME","REPORT_TYPE","CALL_SIGN","QUALITY_CONTROL","WND","CIG","VIS","TMP","DEW","SLP","AA1","AA2","AY1","AY2","GF1","MW1","REM"
"94733099999","2019-01-03T22:00:00","4","-32.5833333","151.1666666","45.0","SINGLETON STP, AS","FM-12","99999","V020","050,1,N,0010,1","22000,1,9,N","025000,1,9,9","+0260,1","+0210,1","99999,9","24,0000,9,1",,"0,1,02,1","0,1,02,1","01,99,1,99,9,99,9,99999,9,99,9,99,9","01,1","SYN05294733 11/75 10502 10260 20210 60004 70100 333 70000="
"94733099999","2019-01-04T04:00:00","4","-32.5833333","151.1666666","45.0","SINGLETON STP, AS","FM-12","99999","V020","090,1,N,0021,1","22000,1,9,N","025000,1,9,9","+0378,1","+0172,1","99999,9","06,0000,9,1",,"0,1,02,1","0,1,02,1","03,99,1,99,9,99,9,99999,9,99,9,99,9","03,1","SYN04294733 11/75 30904 10378 20172 60001 70300="
"94733099999","2019-01-04T22:00:00","4","-32.5833333","151.1666666","45.0","SINGLETON STP, AS","FM-12","99999","V020","290,1,N,0057,1","99999,9,9,N","020000,1,9,9","+0339,1","+0201,1","99999,9","24,0000,9,1",,"0,1,02,1","0,1,02,1",,"02,1","SYN05294733 11970 02911 10339 20201 60004 70200 333 70000="
"94733099999","2019-01-05T22:00:00","4","-32.5833333","151.1666666","45.0","SINGLETON STP, AS","FM-12","99999","V020","200,1,N,0026,1","99999,9,9,N","000100,1,9,9","+0209,1","+0193,1","99999,9","24,0004,3,1",,"1,1,02,1","1,1,02,1","08,99,1,99,9,99,9,99999,9,99,9,99,9","51,1","SYN05294733 11/01 82005 10209 20193 69944 75111 333 70004="
"94733099999","2019-01-08T04:00:00","4","-32.5833333","151.1666666","45.0","SINGLETON STP, AS","FM-12","99999","V020","070,1,N,0026,1","22000,1,9,N","025000,1,9,9","+0344,1","+0213,1","99999,9","06,0000,9,1",,"2,1,02,1","2,1,02,1","04,99,1,99,9,99,9,99999,9,99,9,99,9","02,1","SYN04294733 11/75 40705 10344 20213 60001 70222="
""" # noqa: E501
Run Code Online (Sandbox Code Playgroud)