【问题标题】:Extract value from text string using format string in python使用python中的格式字符串从文本字符串中提取值
【发布时间】:2020-08-20 06:30:31
【问题描述】:

我有一个格式字符串和一个输入字符串,例如:

format_string = "name=%s, age=%d"
input_string = "name=username, age=100"

关于如何以简洁的方式提取 %s%d 的等效值有什么建议吗?

【问题讨论】:

  • 我很确定你会为此使用regular expressions
  • 您的限制是什么?一定要支持完整的conversion specifier吗?预期的输出是什么(例如,年龄应该以数字形式返回)?你到底在哪里卡住了你的实施;给minimal reproducible example
  • l = [s.split('=') for s in input_string.split(' , ')] ; `d = {key: val for key, val in l} ?
  • 抱歉不清楚,输出可以是包含所需值的任何格式(列表/设置等)。例如 [username, 100] 在我们的例子中。我找不到任何潜在的解决方案,所以没有任何编码示例。
  • 显示输入示例和输出示例

标签: python string format


【解决方案1】:

除非您想使用正则表达式或拆分技术,您可以尝试TTP 提取所需的值:

from ttp import ttp
import pprint

data = """
name=username1, age=1001
name=username2, age=1002
name=username3, age=1003
"""

template = "name={{ name }}, age={{ age }}"

parser = ttp(data, template)
parser.parse()
res = parser.result(structure="flat_list")
pprint.pprint(res)

# prints:
# [{'age': '1001', 'name': 'username1'},
#  {'age': '1002', 'name': 'username2'},
#  {'age': '1003', 'name': 'username3'}]

【讨论】:

  • 不错!将等待某个使用核心 python 库的任何方法,否则将接受这个:)
猜你喜欢
  • 2016-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-03
  • 1970-01-01
  • 2012-02-25
  • 1970-01-01
相关资源
最近更新 更多