将字符串转换为混合 float、int 和 str 的列表,知道 Python 中的格式

Convert string to list of mixed float, int and str knowing the format in Python

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

非常感谢,

Ch.

使用parse模块。这个模块可以做到'reverse formatting'。示例:

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