Python [变量作为字符串]>;印刷的特殊字符

Python [变量作为字符串]>;印刷的特殊字符,python,Python,我面临一种奇怪的情况。将变量设置为字符串后,我尝试打印该变量,并将带有字符的字符串替换为特殊字符 file_version_cmd="wmic datafile where name='C:\\\Program Files (x86)\\\Citrix\\\ICA Client\\\4.1\\\wfcrun32.exe'" print(file_version_cmd) 打印输出为: wmic数据文件,其中name='C:\Program Files(x86)\Citrix\ICA客户端\♦.

我面临一种奇怪的情况。将变量设置为字符串后,我尝试打印该变量,并将带有字符的字符串替换为特殊字符

file_version_cmd="wmic datafile where name='C:\\\Program Files (x86)\\\Citrix\\\ICA Client\\\4.1\\\wfcrun32.exe'"
print(file_version_cmd)
打印输出为: wmic数据文件,其中name='C:\Program Files(x86)\Citrix\ICA客户端\♦.1\wfcrun32.exe'

“.4.1…”替换为“.”。。♦.1.“


感谢您的帮助

您的字符串中有
'\\\4.
,它使用
\ooo八进制值转义序列为
'\4'
创建了不可打印的字节。数字被解释为
八进制数

默认的
\xhh
语法用于以十六进制表示该值

您可以使用原始字符串文字重写字符串,如下所示:

上述两个代码段将导致:

wmic datafile where name='C:\Program Files (x86)\Citrix\ICA Client\4.1\wfcrun32.exe'
此外,您还可以使用正斜杠,并且大多数Windows API在文件名中都接受这两种类型的斜杠分隔符(如果文件名路径将由python本身使用,但在其他情况下可能无法正常工作):


如果您想进一步了解python词法分析器,可以参考

如果您想转义a\,请使用\(两个反斜杠,而不是三个)。最好使用原始字符串:
name=r'C:\Program Files…”
这样就不需要转义它们。您希望输出是什么?带反斜杠和空格的文件路径要想正确处理,可能会让人头疼。在本例中,我假设您也希望将此命令传递给windows shell。如果路径由python使用,则正向斜杠可以工作。但在本例中,它看起来将被传递给shell命令。所以它可能不会像预期的那样工作。我是为Windows API编写的,所以它是隐含的,但无论如何编辑都是一个警告。谢谢
file_version_cmd = "wmic datafile where name='C:\\Program Files (x86)\\Citrix\\ICA Client\\4.1\\wfcrun32.exe'"
wmic datafile where name='C:\Program Files (x86)\Citrix\ICA Client\4.1\wfcrun32.exe'
file_version_cmd = "wmic datafile where name='C:/Program Files (x86)/Citrix/ICA Client/4.1/wfcrun32.exe'"