将动态生成的字符串转换为原始文本

时间:2013-02-06 05:06:08

标签: python

我是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(忽略空格,但仍保留两者之间的空间并将其视为一个字符串)

虽然网上有几条评论,但我无法解决这个问题。

请帮忙。

由于

2 个答案:

答案 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中类似”。但是现在,我们必须相应地准备这个字符串。那么如果你必须输入一个带空格作为参数的文件名,你会怎么做?你把它放在双引号之间。这就是我在这里做的。