Python:为什么这个字符串无效?

我有这个字符串:


'  ServerAlias {hostNameshort}.* www.{hostNameshort}.*'.format(hostNameshort=hostNameshort)

但是它一直给我一个语法错误。该行应该是等效的bash:


echo "    ServerAlias ${hostOnly}.* www.${hostOnly}.*" >> $prjFile

请注意,第一个字符串是myFile.write函数的一部分,但这不是问题,我什至无法获得足够有意义的字符串来让我运行程序。


追溯:


  File "tomahawk_alpha.py", line 89

    '  ServerAlias {hostNameshort}.* www.{hostNameshort}.*'.format(hostNameshort=hostNameshort)

                                                          ^

但是,无论我如何更改该'符号,它似乎都不起作用。我究竟做错了什么?


回应@mgilson:


    myFile = open(prjFile, 'w+')

    myFile.write("<VirtualHost 192.168.75.100:80>"

                 "  ServerName www.{hostName}".format(hostName=hostName)

                 '  ServerAlias {hostNameshort}.* www.{hostNameshort}.*'.format(hostNameshort=hostNameshort)

                 "  DocumentRoot ", prjDir, "/html"

                 '  CustomLog "\"|/usr/sbin/cronolog /var/log/httpd/class/',prjCode,'/\{hostName}.log.%Y%m%d\" urchin"'.format(hostName=hostName)

                 "</VirtualHost>")

    myFile.close()

我在每一行中都有自己的myFile.write行,但它仅产生第一行,然后退出。因此,我假定只调用一次并将其间隔开就可以达到预期的效果。


慕雪6442864
浏览 168回答 2
2回答

慕森王

自动字符串连接仅适用于字符串文字:"foo"&nbsp; "bar"&nbsp;结果是 "foobar"但是,以下操作无效:("{}".format("foo")&nbsp;&nbsp;"bar")这类似于您在做什么。解析器看到这样的东西:"{}".format("foo") "bar"(因为它会连接括号未结束的行),这显然是无效的语法。要修复它,您需要显式连接字符串。例如:("{}".format("foo") +&nbsp;"bar")或对整个字符串使用字符串格式设置,而不是一次只对其中一部分进行格式化。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python