python - 将多行“表格”字符串转换为字典
问题描述
我有一个看起来像这样的字符串:
name1 pass blue n/a
name-6t56-yt6 fail red n/a
name-45 pass blue n/a
name-6t567-yt6 fail red n/a
我想从前 2 列中提取数据,理想情况下以下列方式将其存储在字典中:
[{'type': 'name1', 'status': 'pass'}, {'type': 'name-6t56-yt6', 'status': 'fail'}, {'type': 'name-45', 'status': 'pass'}, {'type': 'name-6t567-yt6', 'status': 'fail'}]
关于如何解决这个问题的任何想法?
请注意,这是一个多行字符串(utf-8 格式)。
解决方案
假设您想要一个列表:
设置:
>>> s = '''name1 pass blue n/a
... name-6t56-yt6 fail red n/a
... name-45 pass blue n/a
... name-6t567-yt6 fail red n/a'''
构造结果:
>>> [dict(zip(('type', 'status'), line.split(maxsplit=2)[:2])) for line in s.splitlines()]
[{'type': 'name1', 'status': 'pass'}, {'type': 'name-6t56-yt6', 'status': 'fail'}, {'type': 'name-45', 'status': 'pass'}, {'type': 'name-6t567-yt6', 'status': 'fail'}]
推荐阅读
- python - 为什么 Selenium (Python) 在带有链接文本的页面上找不到链接?
- swift - 在子类中使用 init
- ruby - 同步线程启动
- odata - 如何使用 odata v4 模型从查询对象创建上下文绑定
- mysql - 将 MIN() 函数与 INNER JOIN 一起使用
- ruby-on-rails - 在 Rails 中使用日期或整数列的优先级
- javascript - react-router-dom:如何设置 Route 以便它将在两个路径中的任何一个处呈现组件?
- python - 使用 BeautifulSoup 从 svg 中抓取文本
- java - 如何修复 json 搜索
- angular - 将角度组件变量绑定到 CSS 数据属性