处理路径变量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