abh*_*bhi 1 python literals string-literals bytestring python-3.x
我需要解析源代码中跨越多行的字节字符串.像这样
self.file.write(b'#compdef %s\n\n'
'_arguments -s -A "-*" \\\n' % (self.cmdName,))
Run Code Online (Sandbox Code Playgroud)
此行抛出以下异常
builtins.SyntaxError: cannot mix bytes and nonbytes literals
Run Code Online (Sandbox Code Playgroud)
可以通过以下方式修复
self.file.write(b'#compdef %s\n\n\'\'_arguments -s -A "-*" \\\n' % (self.cmdName,))
Run Code Online (Sandbox Code Playgroud)
注意后面的反斜杠\n.但是此修复程序遵循每行少于79个字符的项目规则.
我该如何解决?
代码在Python 2上工作正常,但在Python 3上失败.
您可以使用多个字符串文字,但它们必须属于同一类型.您缺少b第二行的前缀:
self.file.write(b'#compdef %s\n\n'
b'_arguments -s -A "-*" \\\n' % (self.cmdName,))
Run Code Online (Sandbox Code Playgroud)
只有在使用相同类型的字符串文字时,python解析器才会将这些文件合并为一个更长的bytes字符串对象.
它适用于Python 2,因为b前缀是无操作; b'..'并'..'生成相同类型的对象.该b前缀只有在Python 2的存在是为了更容易地编写代码既Python 2和3的相同的代码(多语种).
| 归档时间: |
|
| 查看次数: |
2021 次 |
| 最近记录: |