我有以下字符串(从 .txt 文件加载到 Matlab 单元格):
text = 'u1 @ t=0, K=3.1416, gamma=0.1, A=-0.1 u1 @ t=0.01, K=3.1416,
gamma=0.1, A=-0.1 u1 @ t=0.02, K=3.1416, gamma=0.1, A=-0.1 u1 @ t=0.03,
K=3.1416, gamma=0.1, A=-0.1'
整个字符串变量很长(从 t=0 到 t=1 和不同的参数值)。我想将它们分成多个单元格,以便
A(1)='u1 @ t=0, K=3.1416, gamma=0.1, A=-0.1',A(2)='u1 @ t=0.01, K=3.1416, gamma=0.1, A=-0.1',等等
或者更好的是提取参数
t、K、gamma、A和将它们存储在一个数组中。
如何在 Matlab 中执行此操作? (或在 Python 中)
编辑:
原来我数据中的前几个条目的格式是 ... t=1E-4, ... t=2E-4, ...... t=9E-4, 。 .. t=0.001,一些答案将跳过以科学记数法表示的前几个时间步长。如何处理这些数字?
请您参考如下方法:
您可以使用正则表达式。
获取数字的简单正则表达式是这样的:'-?\d*\.?\d*'。
要获取数据,您可以使用此正则表达式。
'u1 @ t={0}, K={0}, gamma={0}, A={0}'.format('-?\d*\.?\d*')
例子:
>>> import re
>>> text = 'u1 @ t=0, K=3.1416, gamma=0.1, A=-0.1 u1 @ t=0.01, K=3.1416, gamma=0.1, A=-0.1 u1 @ t=0.02, K=3.1416, gamma=0.1, A=-0.1 u1 @ t=0.03, K=3.1416, gamma=0.1, A=-0.1'
>>> r = '-?\d*\.?\d*'
>>> re.findall('u1 @ t={0}, K={0}, gamma={0}, A={0}'.format(r), text)
['u1 @ t=0, K=3.1416, gamma=0.1, A=-0.1', 'u1 @ t=0.01, K=3.1416, gamma=0.1, A=-0.1', 'u1 @ t=0.02, K=3.1416, gamma=0.1, A=-0.1', 'u1 @ t=0.03, K=3.1416, gamma=0.1, A=-0.1']
