- 已关闭**。此问题需要details or clarity。当前不接受答案。
- 想要改进此问题?**添加详细信息并通过editing this post阐明问题。
3小时前关门了。
Improve this question
我有一个字符串包含键,值对,但问题是没有分隔符和键和值都可以有空格。我想得到所有的键值对。input_string_1 = "Emp name: Alice Smith Age: 25 Occupation: Software Engineer Work Exp: 10_years Education: HiringYear: 2020"
并期望输出如下
Emp name: Alice Smith
Age: 25
Occupation: Software Engineer
Work Exp: 10_years
Education:
HiringYear: 2020
我试着用这样的方法来制动绳子
lines = input_string_1.split()
for i in range(1, len(lines)):
if ":" in lines[i]:
lines[i] = "\n" + lines[i]
output_str = " ".join(lines)
使用此方法时,不能正确转换具有空格的关键字。
获取类似输出
Emp
name: Alice Smith
Age: 25
Occupation: Software Engineer Work
Exp: 10_years
Education:
HiringYear: 2020
此外,这些键也不是预定义的
3条答案
按热度按时间q8l4jmvw1#
这是我想到的最好的解决方案。我不得不给值添加一个条件,即值最多只能包含2个空格值。下面的代码将把上面的特定字符串解析到字典中。
7vux5j2d2#
为了普遍解决这个问题,你描述谷歌雇用,并了解他们是如何能够提供这么好的匹配搜索引擎的请求。他们有你需要拿出一个软件能够执行你期望它做的知识。
但是......无论如何,尝试一下肯定是一个很好的练习。只是为了自己看看实际问题在哪里。
为了让你开始以下一些建议:请考虑以下部分
2020
肯定是字典的值标记,并且作为左侧:
的直接邻居的HiringYear
必须是键(没有缺失键......仅假定缺失值)。HiringYear
左侧的:
不能在格式良好的字典中存在,但缺失一些值。从上面你可以得出结论,你需要在
HiringYear and the
之间的双空间分裂:“with the consequence that you become aware of the fact that
Education”必须是具有空值(一个空格)的键。通过类似的思考路径,你会在字符串中找到另一个双倍空间,在那里分裂是最有意义的,因为双倍空间分裂比单个空间分裂更强烈,然后在你的情况下得到一个解。
记住以上几点,您就可以编写能够以自动化方式执行上述注意事项的代码,从而获得实用的解决方案。
在这种情况下,你会注意到,你不能以一种非常简单的自动化方式决定在哪里拆分
name: Alice Smith Age: 25
。令牌Smith
属于哪里?属于前一个字典项的值还是下一个字典项的键?。给定对字典上下文的理解,一个简单的决定,但很难放入一个简单的程序代码。它仍然是可以解决的,但需要大量的假设和对语言的一些基本理解(现代翻译和搜索引擎可以做到这一点)。
rsl1atfo3#
下面是使用
re
和for-loop
的方法。