#思路:
#先获取到双引号内部的命令,这部分是不需要去掉空格的
#再按双引号分割字符串,得到还没按空格分割的命令
#清洗数据,去掉""和" "
#如果不是双引号内部命令就按空格分割,是就不需要分割
import re
a=input()
b=re.findall(r'"(.*?)"',a)#获取到双引号内的命令,方便区分是否按空格分割
c=a.split("\"")#使用双引号分割字符串
d=[]#存储带空格的命令
for i in c:#把c中的空字符串和空格处理掉
if i!="" and i!=" ":
d.append(i)
ans=[]#结果
for i in d:
if i not in b:#不在b中,需要分割后添加
ans+=i.split()
else:
ans.append(i)#在b中,不需要分割,直接添加
print(len(ans))
for i in ans:
print(i)
上面的代码可以通过题目所有用例,但是还是有缺陷的,比如这样的hack数据就过不了
输入: C:\\program files "C:\\program files " "d:\" 输出: 4 C:\\program files C:\\program files d:\
如果规定双引号的内部的命令不能以空格结尾,并且以双引号包裹的命令前后都得用空格和其他命令隔开,上面的代码就没问题了(因为这组hack数据就不存在了)

京公网安备 11010502036488号