Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
处理路径变量python中的空格_Python_Python 2.6 - Fatal编程技术网

处理路径变量python中的空格

处理路径变量python中的空格,python,python-2.6,Python,Python 2.6,我有一个字符串如下 command=“copy1”D:\path1\program Files”“c:\program Files\path1”copy2”D:\path2\program Files”“c:\program Files\path2”“ 请注意,copy1和copy2都位于字符串内部。我的意图是在xml文件中编写每个复制过程,如下所示: <copyFiles> <copy1>

我有一个字符串如下

command=“copy1”D:\path1\program Files”“c:\program Files\path1”copy2”D:\path2\program Files”“c:\program Files\path2”“

请注意,copy1和copy2都位于字符串内部。我的意图是在xml文件中编写每个复制过程,如下所示:

        <copyFiles>
               <copy1>
                    <Sourcepath>D:\path1\program Files</Sourcepath>
                    <DestPath>c:\program Files\path1</DestPath>
                </copy1>

                 <copy2>
                    <Sourcepath>D:\path2\program Files</Sourcepath>
                    <DestPath>c:\program Files\path2</DestPath>
                  </copy2>

         <copyFiles>
a = 'this "is a string" with "4 elements"'
split = magic_splitter(a)  #How to write magic splitter?
print split  #['this', 'is a string', 'with', '4 elements']
我的清单内容如下:
[“copy1”、“D:\path1\program Files”、“c:\program Files\path1”、“copy2”,
“D:\path2\program Files],“c:\program Files\path2”]


请帮助

您想要什么输出?您可以使用
join
将其设置为您想要的任何格式。例如,要简单地删除空格,请使用

Copyparamlist=''.join(command.split(' '))
或者,如果要将其替换为%20,请使用

Copyparamlit='%20'.join(command.split(' '))

你想要什么样的输出?您可以使用
join
将其设置为您想要的任何格式。例如,要简单地删除空格,请使用

Copyparamlist=''.join(command.split(' '))
或者,如果要将其替换为%20,请使用

Copyparamlit='%20'.join(command.split(' '))

很难说您到底想要什么,但看起来您想要按如下方式拆分字符串:

        <copyFiles>
               <copy1>
                    <Sourcepath>D:\path1\program Files</Sourcepath>
                    <DestPath>c:\program Files\path1</DestPath>
                </copy1>

                 <copy2>
                    <Sourcepath>D:\path2\program Files</Sourcepath>
                    <DestPath>c:\program Files\path2</DestPath>
                  </copy2>

         <copyFiles>
a = 'this "is a string" with "4 elements"'
split = magic_splitter(a)  #How to write magic splitter?
print split  #['this', 'is a string', 'with', '4 elements']
如果是这样的话,您需要使用奇妙的函数
shlex.split

print shlex.split(a) #['this', 'is a string', 'with', '4 elements']

很难说您到底想要什么,但看起来您想要按如下方式拆分字符串:

        <copyFiles>
               <copy1>
                    <Sourcepath>D:\path1\program Files</Sourcepath>
                    <DestPath>c:\program Files\path1</DestPath>
                </copy1>

                 <copy2>
                    <Sourcepath>D:\path2\program Files</Sourcepath>
                    <DestPath>c:\program Files\path2</DestPath>
                  </copy2>

         <copyFiles>
a = 'this "is a string" with "4 elements"'
split = magic_splitter(a)  #How to write magic splitter?
print split  #['this', 'is a string', 'with', '4 elements']
如果是这样的话,您需要使用奇妙的函数
shlex.split

print shlex.split(a) #['this', 'is a string', 'with', '4 elements']

您需要有另一个分隔符而不是空格。。。 例如例如,您可以使用引号作为分隔符

CopyParam = command.split('"')
我应该理解string命令的格式吗 作为copyName“源”“目标”。。。 你可以在三胞胎列表上循环。。。 像


您可能需要先从列表中删除空元素。

您需要使用空格以外的另一个分隔符。。。 例如例如,您可以使用引号作为分隔符

CopyParam = command.split('"')
我应该理解string命令的格式吗 作为copyName“源”“目标”。。。 你可以在三胞胎列表上循环。。。 像


您可能需要首先从列表中删除空元素。

我假设您的命令字符串实际指定为

command='copy1 "something with spaces" "somewhere else" copy2 "this thing" "elsewhere"'
如果您的命令始终是复制命令,请查看“复制”一词的拆分并处理结果列表

command.split('copy')
['','1 "something with spaces" "somewhere else" ','2 "this thing" "elsewhere"']

我假设您的命令字符串实际上指定为

command='copy1 "something with spaces" "somewhere else" copy2 "this thing" "elsewhere"'
如果您的命令始终是复制命令,请查看“复制”一词的拆分并处理结果列表

command.split('copy')
['','1 "something with spaces" "somewhere else" ','2 "this thing" "elsewhere"']

我想这条线可能有你想要的。如果您试图忽略引号中的拆分,则可能必须使用正则表达式

请尝试以下代码:

import re
PATTERN = re.compile(r'''((?:[^ "']|"[^"]*"|'[^']*')+)''')
command = PATTERN.split(command)

我想这条线可能有你想要的。如果您试图忽略引号中的拆分,则可能必须使用正则表达式

请尝试以下代码:

import re
PATTERN = re.compile(r'''((?:[^ "']|"[^"]*"|'[^']*')+)''')
command = PATTERN.split(command)

有了此功能,可以轻松地将其作为字典进行管理:

import shlex
split = shlex.split(commandlist)
commands = dict(zip(split[::3], zip(split[1::3], split[2::3])))
说明: 给定字符串“copyname”source“dest”copyname2“source2”“dest2”

split=shlex.split()将以
['copyname','source','dest','copyname2','source2','dest2']的格式拆分字符串。

split[::3]
正在做一种叫做拼接的事情。这暗含着“从0索引开始,每三个项目给我一个。”<代码>拆分[::3]将等于
['copyname','copyname2']
。然而,拼接并没有就此结束
split[1::3]
说从索引1开始,然后每隔三个元素给出一个。它将返回所有源

zip
函数是一个独特的函数。给定列表
l1=['a','b','c']
l2=[1,2,3]
zip(l1,l2)
将等于
[('a',1),('b',2),('c',3)]

zip(拆分[1::3],拆分[2::3])
将等于
[('source','dest'),('source2','dest2')]

zip(split[::3]、zip(split[1::3]、split[2::3])
将等于
[('copyname',('source','dest'))、('copyname2',('source2','dest2'))]

然后,
dict
函数将给定列表中的每个键/值对(
copyname
('source','dest')
)转换为字典

commands
变量现在的格式为
{'copyname':('source','dest'),…}
要写入xml,只需遍历字典即可

专业提示:当使用的遍历字典时,每一项都是一个键


如果您愿意,您可以使用
在zip中对copyname、source、dest(split[::3]、split[1::3]、split[2::3])

这样,就可以轻松地将其作为字典进行管理:

import shlex
split = shlex.split(commandlist)
commands = dict(zip(split[::3], zip(split[1::3], split[2::3])))
说明: 给定字符串“copyname”source“dest”copyname2“source2”“dest2”

split=shlex.split()将以
['copyname','source','dest','copyname2','source2','dest2']的格式拆分字符串。

split[::3]
正在做一种叫做拼接的事情。这暗含着“从0索引开始,每三个项目给我一个。”<代码>拆分[::3]将等于
['copyname','copyname2']
。然而,拼接并没有就此结束
split[1::3]
说从索引1开始,然后每隔三个元素给出一个。它将返回所有源

zip
函数是一个独特的函数。给定列表
l1=['a','b','c']
l2=[1,2,3]
zip(l1,l2)
将等于
[('a',1),('b',2),('c',3)]

zip(拆分[1::3],拆分[2::3])
将等于
[('source','dest'),('source2','dest2')]

zip(split[::3]、zip(split[1::3]、split[2::3])
将等于
[('copyname',('source','dest'))、('copyname2',('source2','dest2'))]

然后,
dict
函数将给定列表中的每个键/值对(
copyname
('source','dest')
)转换为字典

comm