Это возможно, если вы предполагаете, что значения не могут содержать символ _
(также предполагается, что вы хотите отбросить .pkl
в конце).
input = [
"number__128_alg__hello_min_n__7_max_n__9_full_seq_embedding__True_random_color__False_shuffle_shapes__False.pkl",
"k__9_window__10_number__128_overlap__True_alg__hi_min_n__7_max_n__9_full_seq_embedding__False_random_color__False_shuffle_shapes__False.pkl",
"k__9_window__10_number__128_overlap__True_alg__what_random_color__False_shuffle_shapes__False.pkl"
]
Простое регулярное выражение должно делатьхитрость:
import re
data = [dict(re.findall(r"([^_].*?)__([^_]+)", _[:-4])) for _ in input]
print(data)
Результат:
[{'number': '128',
'alg': 'hello',
'min_n': '7',
'max_n': '9',
'full_seq_embedding': 'True',
'random_color': 'False',
'shuffle_shapes': 'False'},
{'k': '9',
'window': '10',
'number': '128',
'overlap': 'True',
'alg': 'hi',
'min_n': '7',
'max_n': '9',
'full_seq_embedding': 'False',
'random_color': 'False',
'shuffle_shapes': 'False'},
{'k': '9',
'window': '10',
'number': '128',
'overlap': 'True',
'alg': 'what',
'random_color': 'False',
'shuffle_shapes': 'False'}]
В качестве кадра данных:
import pandas as pd
pd.DataFrame(data)
![enter image description here](https://i.stack.imgur.com/krmFh.png)