将此字符串拆分为代码,无需额外空间

时间:2019-03-04 06:17:24

标签: python

我有一个长字符串,例如:

    cmd = "python %sbin/datax.py -p '-Drun=%s -Drpwd=%s -Drjdbc=%s -Dcond=%s -Dtable=%s \ 
                                 -Dwun=%s -Dwpwd=%s -Dwjdbc=%s' %s" % ( DATAX_HOME,
                                                                      rds_reader['username'],
                                                                      rds_reader['password'],
                                                                      sub_jdbc_url_generator(args.reader),
                                                                      where_condition,
                                                                      args.table,
                                                                      rds_writer['username'],
                                                                      rds_writer['password'],
                                                                      sub_jdbc_url_generator(args.writer),
                                                                      job_template_file)

我不想将所有-D放在一行中,因为这看起来太长了,上面的代码实际上可以工作,但是它返回:

python /tmp/datax/bin/datax.py -p '-Drun=xxx ... -Dtable=demo                                      -Dwun=yyy ...'

结果内部空间较长。我也阅读了一些问题,但是此字符串包含一些%s要填充。

那么如何解决这个问题呢?还是其他优雅的写作方式?任何帮助表示赞赏。


预期输出:

python /tmp/datax/bin/datax.py -p '-Drun=xxx ... -Dtable=demo -Dwun=yyy ...'

1 个答案:

答案 0 :(得分:1)

Python将连接两个相邻的字符串。引用的字符串之间的间距将被丢弃。例如:

print("something "    "something")

输出:

something something

因此,您可以简单地执行以下操作:用两个完整的字符串将行扩展为带有行连续符(\)或将这些字符串用括号括起来:

cmd1 = "python blah blah "\
       "more {} {} blah".format('abc',123)

cmd2 = ("python blah blah "
        "{} {} "
        "more stuff").format('abc',123)

print(cmd1)
print(cmd2)

输出:

python blah blah more abc 123 blah
python blah blah abc 123 more stuff