python - 如何在python中有效地根据多个条件拆分文本?
问题描述
嘿,所以我期待用户以这种方式输入:
1 = 20,
2 = 14,
3-5 = 10
现在我想要的是一个字典:
{1:20,
2:14,
3:10,
4:10,
5:10}
我想将用户输入拆分为,
and=
所以我做了:
for i in points.replace('\n','').split(','):
yield i.split("=")
我得到了包含 2 个元素的列表:
['1 ', ' 20']
['2 ', ' 14']
['3-5 ', ' 10']
所有这一切都很顺利,但我被击中的是第三个列表(['3-5 ', ' 10']
),我希望将其转换为一个范围,这样我就可以获得我想要的最终 dict,我可以找出一些 hacky 方式,但我不认为我是遵循我在这里尝试实现的最佳方法。你能建议我一个更好、更有效的方法吗?
谢谢 :)
解决方案
你可以参考这段代码
#===== if you want, you can do this too.
points="1 = 20,\n2 = 14,\n3-5 = 10"
x=[]
for i in points.split(','):
x.append(i.strip("\n").split("="))
#=====
x=[['1 ', ' 20'],
['2 ', ' 14'],
['3-5 ', ' 10']]
dic1={}
for i in x:
if "-" in i[0]:
i2=i[0].split("-")
for j in range(int(i2[0]), int(i2[1])+1):
dic1.update({j:i[1]})
else:
dic1.update({i[0]:i[1]})
print(dic1)
推荐阅读
- angular - 如何确保在执行 observable 之前获得一个值?
- blockchain - 矿池中的所有矿工是否都从零开始将随机数变量一一增加?
- java - 覆盖接口函数时自动生成注释?
- c++ - 在 Visual Studio 项目中链接 Tensforflow
- scala - 如何使用scala Play2.6从数据库中选择单列
- logstash - 来自 Monlog 的 Logstash 和嵌套 JSON;为什么将数组转换为 JSON 字符串?
- html - 使用 xpath 从 ul 中选择 li 元素
- c# - 导出和导入文件内容
- nginx - Nginx 删除 uri 中的路径
- java - 使用 jxl 写入 excel,出现 indexOutofBoundException 错误