HJ74 参数解析【python】

题目描述

在命令行输入如下命令:
xcopy /s c:\ d:\e,
各个参数如下:
参数1:命令字xcopy
参数2:字符串/s
参数3:字符串c:\
参数4: 字符串d:\e
请编写一个参数解析程序,实现将命令行各个参数解析出来。

解析规则:
1.参数分隔符为空格
2.对于用""包含起来的参数,如果中间有空格,不能解析为多个参数。比如在命令行输入xcopy /s “C:\program files” "d:“时,参数仍然是4个,第3个参数应该是字符串C:\program files,而不是C:\program,注意输出参数时,需要将”"去掉,引号不存在嵌套情况。
3.参数不定长
4.输入由用例保证,不会出现不符合要求的输入
数据范围:字符串长度: 1 ≤ s ≤ 1000 1\le s\le 1000 1s1000
进阶:时间复杂度: O ( n ) O(n) O(n),空间复杂度: O ( n ) O(n) O(n)

输入描述

输入一行字符串,可以有空格

输出描述

输出参数个数,分解后的参数,每个参数都独占一行

代码&思路

思路

  1. 用一个指标判断当前遍历的字符是否由双引号包围。0:否 1:是
  2. 遍历输入的字符串,遍历到双引号的时候更新指标参数。
  3. 不妨记指标为flag。当flag=1时,说明此时遍历的部分在一对双引号内,故直到遍历到下一个双引号,当前遍历的部分都是同一个参数的内容;当flag=0时,则以空格为分割符,将参数分割开来。
  4. 具体的代码实现要注意if的判断条件,当遍历到双引号外的空格时,可以通过加入一个换行符\n来保证输出参数的时候换行输出。也可以通过计算换行符的个数+1来得到参数的个数

代码实现

S=input()
n=len(S)
L=''
k=0 #0:非双引号内字符 1:双引号内字符

for i in range(n):
    # 双引号判断
    if S[i]=='"':
        if k==0:
            k=1
        else:
            k=0
            #print("i=%d,1" %i)

    if k==1 and S[i]!='"':
        L=L+S[i]
    if k==0 and S[i]!=' ' and S[i]!='"':
        L=L+S[i]

    if k==0 and S[i]==' ':   
        L=L+'\n'
        #print("i=%d,2" %i)

print(list(L).count('\n')+1)
print(L)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值