我是python的新手,我遇到了一个问题,我正在从字典中动态检索字符串,看起来像这样
files="eputilities/epbalancing_alb/referenced assemblies/model/cv6_xmltypemodel_xp2.cs"
我无法对此特定文件执行任何操作,因为它将路径读为2个不同的字符串
eputilities/epbalancing_alb/referenced and assemblies/model/cv6_xmltypemodel_xp2.cs
因为引用和汇编之间存在空格。
我想知道如何将其转换为raw_string(忽略空格,但仍保留两者之间的空间并将其视为一个字符串)
虽然网上有几条评论,但我无法解决这个问题。
请帮忙。
由于
答案 0 :(得分:1)
python中的标准字符串构建就像这样工作
'%s foo %s'%(str_val_1, str_val_2)
因此,如果我理解你,你要么拥有两个字符串或两个不同字符串变量的列表。
对于先前的做法:
' '.join(list)
对于后者这样做:
'%s %s'%(string_1, string_2)
答案 1 :(得分:1)
从评论到其他答案,我了解你想要执行一些外部工具并将参数(文件名)传递给它。但是,此参数中包含空格。
我建议采取措施;我绝对会使用subprocess
,而不是os.system
。
import subprocess
# Option 1
subprocess.call([path_to_executable, parameter])
# Option 2
subprocess.call("%s \"%s\"" % (path_to_executable, parameter), shell=True)
对我而言,两者都有效,请检查它们是否也适用于您。
解释:
选项1采用字符串列表,其中第一个字符串必须是可执行文件的路径,而所有其他字符串都被解释为命令行参数。由于subprocess.call knows about each of these entities, it properly calls the external so that it understand that
参数`将被解释为带空格的一个字符串 - 而不是两个或更多个参数。
选项2是不同的。使用关键字参数shell=True
,我们告诉subprocess.call
通过shell执行调用,即第一个位置参数“被解释为好像它在shell中类似”。但是现在,我们必须相应地准备这个字符串。那么如果你必须输入一个带空格作为参数的文件名,你会怎么做?你把它放在双引号之间。这就是我在这里做的。