【问题标题】:Convert string to list of mixed float, int and str knowing the format in Python [duplicate]将字符串转换为混合浮点数、int和str的列表,知道Python中的格式[重复]
【发布时间】:2017-11-22 21:56:00
【问题描述】:

考虑像'1.5 1e+05 test 4' 这样的简单字符串。 Python 2.7 中用于生成该字符串的格式是'%f %e %s %i'。我想从知道字符串格式化程序的输入字符串中检索[1.5,100000,'test',4] 形式的列表。我该怎么做(Python 2.7 或 Python 3)?

非常感谢,

章节

【问题讨论】:

  • import parse, format_string='{:1f} {:.2e} {:s} {:d}' pn=format_string.format(1.5,100000,'test',4) parsed=parse.parse(format_string, pn) 不起作用
  • 您是否下载并安装了parse 模块?
  • 是的,当然,在我的例子中 type(parsed)NoneType
  • 你考虑过ast.literal_eval吗?
  • 在您的格式字符串中,将{:s} 替换为{}。出于某种原因,这有效

标签: string python-3.x python-2.7 formatter


【解决方案1】:

使用parse 模块。该模块可以进行“反向格式化”。示例:

from parse import parse

format_str = '{:1f} {:.2e} {} {:d}' 
data = [1.5, 100000, 'test', 4]
data_str = format_str.format(*data)
print(data_str) # Output: 1.500000 1.00e+05 test 4
parsed = parse(format_str, data_str)
print(parsed) # Output: <Result (1.5, 100000.0, 'test', 4) {}>
a, b, c, d = parsed # Whatever

【讨论】:

  • @ChrisB 不客气!如果您喜欢这个答案,请接受它
猜你喜欢
  • 2021-02-26
  • 1970-01-01
  • 2021-09-24
  • 1970-01-01
  • 2021-09-10
  • 2023-03-25
  • 1970-01-01
  • 2018-02-07
  • 1970-01-01
相关资源
最近更新 更多