python - 使用 python 反向模板

标签 python regex string templates

我有一个文件,其中充满了某种格式的数据,我想用该数据填充我自己的数据结构

例如,我可以有一个这样的文件:

John - Smith : 0123
children: 
  Sam
  Kim

我想用该字符串做一些事情,以便将数据提取到例如

firstName = "John"
lastName = "Smith"
number = "0123"
children = ['Sam', 'Kim']

我希望有一种比使用分隔符更简单的方法..

最佳答案

这是一个正则表达式解决方案:

>>> import re
>>> data = 'John - Smith : 0123\nchildren: \n  Sam\n  Kim'
>>> match = re.match(r'(\w+) - (\w+) : (\d+).*?children:(.*)', data, re.S)
>>> match.groups()
('John', 'Smith', '0123', ' \n  Sam\n  Kim')

然后您可以将组分配给您的变量:

>>> firstName, lastName, number = match.groups()[:3]
>>> children = [c.strip() for c in match.group(4).strip().split('\n')]

结果...

>>> firstName
'John'
>>> lastName
'Smith'
>>> number
'0123'
>>> children
['Sam', 'Kim']

关于python - 使用 python 反向模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8001537/

相关文章:

python - 在 MultiIndex DataFrame 上使用重新索引在 Pandas 中插入行

python - 如何正确解析右括号

javascript - JavaScript 中的 MessageFormat(本地化 UI 字符串中的参数)

python - 如何避免在 Python 中对大量 dict 键字符串进行硬编码

java - 如何计算字符串中格式字符的数量?

python - 如何使用 pandas 读取列中包含空格的空格分隔文件?

python - 如何在 python pandas 中查找特定列的唯一值计数?

python - 多列交叉表

r - 使用gsub替换字符,如何创建函数?

java - 在Java中转换为大写和小写