为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕雪6442864 2021-03-16 13:13:45
我有这个字符串:'  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行,但它仅产生第一行,然后退出。因此,我假定只调用一次并将其间隔开就可以达到预期的效果。
查看完整描述

2 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

自动字符串连接仅适用于字符串文字:


"foo"  "bar" 

结果是 "foobar"


但是,以下操作无效:


("{}".format("foo") 

 "bar")

这类似于您在做什么。解析器看到这样的东西:


"{}".format("foo") "bar"

(因为它会连接括号未结束的行),这显然是无效的语法。要修复它,您需要显式连接字符串。例如:


("{}".format("foo") +

 "bar")

或对整个字符串使用字符串格式设置,而不是一次只对其中一部分进行格式化。


查看完整回答
反对 回复 2021-03-29
  • 2 回答
  • 0 关注
  • 167 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信