gpt4 book ai didi

regex - 正则表达式可以返回结构中的键/值对吗?

转载 作者:太空宇宙 更新时间:2023-11-03 19:56:32 26 4
gpt4 key购买 nike

假设我有一个包含键/值对的字符数组:

ch = sprintf('name: John\nsex: M\n')
ch =
'name: John
sex: M
'

这只是一个示例。实际数据在一个文件中并且有很多对。我可以使用 regexp 获取标记,然后使用 for 循环将它们分配给结构:

lns = regexp(ch, '(\w*):\s(.*?)\n', 'tokens');
for i = 1:numel(lns)
myStruct.(lns{i}{1}) = lns{i}{2};
end

myStruct =

struct with fields:

name: 'John'
sex: 'M'

有没有更简单的方法来实现这一点,比如使用 regexp(ch, expr, 'names')

最佳答案

您可以通过将键/值对收集到单个元胞数组中然后将其内容作为 comma-separated list 传递来避免 for 循环至 struct :

args = [lns{:}];
myStruct = struct(args{:});

输出:

myStruct = 

struct with fields:

name: 'John'
sex: 'M'

或者,您可以避免使用 regexp并使用 textscan从文件中读取,这可能会提高性能:

strs = textscan(fileID, '%s', 'Delimiter', ':');
myStruct = struct(strs{1}{:});

关于regex - 正则表达式可以返回结构中的键/值对吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46334679/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com