0

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

尽管网上有几条评论,但我无法弄清楚这一点。

请帮忙。

谢谢

4

2 回答 2

1

python中的标准字符串构建是这样的

'%s foo %s'%(str_val_1, str_val_2)

因此,如果我的理解正确,要么有两个字符串的列表,要么有两个不同的字符串变量。

对于之前这样做:

' '.join(list)

对于后者,这样做:

'%s %s'%(string_1, string_2)
于 2013-02-06T05:24:49.377 回答
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 采用字符串列表,其中第一个字符串必须是可执行文件的路径,所有其他字符串都被解释为命令行参数。As subprocess.call knows about each of these entities, it properly calls the external so that it understand thatparameter` 将被解释为一个带空格的字符串 - 而不是两个或多个参数。

Option 2 is different. With the keyword-argument shell=True we tell subprocess.call to execute the call through a shell, i.e., the first positional argument is "interpreted as if it was typed like this in a shell". But now, we have to prepare this string accordingly. So what would you do if you had to type a filename with spaces as a parameter? You'd put it between double quotes. This is what I do here.

于 2013-02-06T07:25:33.753 回答