你如何在python的垂直字符串列表中保护自己不会丢失逗号?

时间:2012-09-28 23:02:57

标签: python

在python中,具有垂直方向的字符串列表是很常见的。例如:

subprocess.check_output( [
  'application',
  '-first-flag',
  '-second-flag',
  '-some-additional-flag'
] )

这看起来不错,可读,不违反80栏规则......但如果错过了逗号,就像这样:

subprocess.check_output( [
  'application',
  '-first-flag'  # missed comma here
  '-second-flag',
  '-some-additional-flag'
] )

Python仍然会通过连接两个stings来假设此代码有效:(。是否有可能以某种方式保护自己免受此类拼写错误,同时仍然使用垂直方向的字符串列表并且没有膨胀代码(例如包围str()内的每个项目)?

4 个答案:

答案 0 :(得分:5)

你可以在空格之后的行尾添加逗号,如下所示:

subprocess.check_output( [
   'application'           ,
   '-first-flag'           ,
   '-second-flag'          ,
   '-some-additional-flag' ,
] )

这样做看起来有点糟糕,但如果你错过任何争论,很容易发现。

答案 1 :(得分:4)

你可以将每个字符串包装在parens中:

subprocess.check_output( [
  ('application'),
  ('-first-flag'),
  ('-second-flag'),
  ('-some-additional-flag'),
] )

顺便说一句,Python可以使用尾随逗号,所以只需在行尾使用逗号,这样也可以减少错误。

答案 2 :(得分:3)

也许是这个特殊情况:

arglist = 'application -first-flag -second-flag -some-additional-flag'
arglist = arglist.split()
subprocess.check_output(arglist)

或者,如果您发现自己编写了许多这样的唯一列表,请创建一个将行连接成列表形式的宏,这样就可以避免手动输入逗号。

答案 3 :(得分:1)

这是另一种选择:

subprocess.check_output('''
application
-first-flag
-second-flag
-some-additional-flag
'''.split())

让Python为您插入逗号,这对于配置文件中的一长串字符串特别有用