python输入字符串转换成字典

有字符串"k: 1|k1 :2|k2:3 |k3 :4" 处理成字典 {‘k’:1,‘k1’:2,…}

输入时应该按照本题的要求输入特定格式的字符
例如“k: 1|k1 :2|k2:3 |k3 :4”这种
程序里就是一步一步把捕获的字符串分离筛选出特定的值,然后再循环打印。

import re
my_enter=input("请输入字典(每一对键值之间用“|”分开):")
my_dict={}		#定义一个空字典
my_enter=str(str(my_enter.split("|")).split(":"))		#先分离键值对,再分离键和值
my_enter=re.sub(" ",'',my_enter)
my_enter=re.sub("\[",'',my_enter)
my_enter=re.sub("\]",'',my_enter)
my_enter=re.sub("\"",'',my_enter)
my_enter=re.sub("\'",'',my_enter)		#把字符中其余元素去掉
my_enter=my_enter.split(",")		#最后把字符串转换成列表样式
for i in range(0,len(my_enter),2):   
    my_dict[str(my_enter[i])] = my_enter[i+1]
print(my_dict)

需要指出的就是为什么会有

my_enter=re.sub("\[",'',my_enter)
my_enter=re.sub("\]",'',my_enter)
my_enter=re.sub("\"",'',my_enter)
my_enter=re.sub("\'",'',my_enter)

这几句话,在上面用“|”和“:”分开的时候字符串就已经被转换成列表了,再次将字符串转换成列表的时候列表中的“【”和“】”还有元素之间的分隔符单引号也会被一同转化成字符串,所以需要在下面的步骤里去掉。
还有一种比较简单的方法:

my_enter=input("请输入字典(每一对键值之间用“|”分开):")
my_dict={}
my_enter=str(str(my_enter.split("|")).split(":")).replace(" ","").replace("[","").replace("]","").replace("\"","").replace("\'","")
my_enter=my_enter.split(",")
for i in range(0,len(my_enter),2):   
    my_dict[str(my_enter[i])] = my_enter[i+1]
print(my_dict)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值