我有一个大文件,其中有几行如下所示,我只想读入那些有_INIT模式的行,然后从名称中去掉_INIT,只将OSD_MODE_15_H部分保存在一个变量中。然后我需要读取相应的十六进制值,在本例中是8'h00,从中去掉8'h,用一个0x替换它,并保存在一个变量中。
我一直在尝试去掉初始化、空格和=,代码变得非常混乱。在
localparam OSD_MODE_15_H_ADDR = 16'h038d;
localparam OSD_MODE_15_H_INIT = 8'h00
你能推荐一种清洁的清洁方法吗?在
谢谢!在
Tags:
您可以使用正则表达式和
re.findall()
函数。例如,要生成包含所需数据的元组列表,请尝试:正则表达式对于您的输入示例来说非常特殊。如果文件中的其他行稍有不同,您可能需要稍微更改一下。在
下面的解决方案使用正则表达式(编译以加快搜索速度)来匹配相关行并提取所需的信息。表达式使用命名组“id”和“hexValue”来标识要从匹配行提取的数据。在
编辑:如果我正确地理解了下一个任务,那么您需要找到那些id匹配的INIT和ADDR行的hexvalue,并为ADDR hexvalue创建一个字典。在
^{pr2}$即使这不是您实际需要的,拥有init和addr字典可能会帮助您更容易地实现目标。如果有多个具有相同ID和不同hexvalue的INIT(或ADDR)行,那么上面的dict方法将无法直接工作。在
尝试这样的方法-不确定您的所有要求是什么,但这会让您接近:
在“16'h038d;”的情况下,clean_hex将是“0x038d;”(需要以某种方式删除“;”),如果是“8'h00”,clean_hex将是“0x00”
编辑:如果你想防止像“;”这样的字符,你可以这样做并测试一个字符是否是字母数字:
^{pr2}$相关问题 更多 >
编程相关推荐