我想将用C语言编写的头文件转换为python中的类
基本上,C中头文件的格式(名为header.c
的文件如下所示:
#define ATTR_A (HELLO +1L) /*FSDSDF*/
#define ATTR_B (HELLO +2L) /*FSFSSF*/
我想要做的是编写一个简单的脚本,它可以从header.c
读取文本,然后将格式转换为python calss并将结果存储到名为header.py
的文件中。转换后,它将是:
ATTR_A = (HELLO +1L)
ATTR_B = (HELLO +2L)
我知道如何阅读文件以及如何将转换结果存储到header.py
,但我知道如何进行转换。有人可以帮帮我吗?谢谢!
答案 0 :(得分:3)
您可以使用re模块(正则表达式)从每行文本中提取所需的部分。
示例:强>
import re
input = ['#define ATTR_A (HELLO +1L) /*FSDSDF*/',
'#define ATTR_B (HELLO +2L) /*FSFSSF*/']
r = re.compile(r'#define (\w*)\s*(\(.*\))')
for line in input:
m = r.match(line)
print '%s = %s' % (m.group(1), m.group(2))
<强>输出:强>
ATTR_A = (HELLO +1L)
ATTR_B = (HELLO +2L)
答案 1 :(得分:-1)
我认为最好的方法是在这里使用re
。
>>> import re
>>> testinput = '#define ATTR_A (HELLO +1L) /*FSDSDF*/'
>>> r = re.split(r'#define (\w*)(\s*)(\(.*\))', testinput)
>>> print '%s = %s' %(r[1], r[3])
ATTR_A = (HELLO +1L)
(\w*)
用于提取'ATTR_A'
(\s*)
用于提取空格
在(\(.*\))
内,\(
实际上匹配(
和\)
匹配)
。 .*
匹配除换行符之外的任何字符。
所以,在split
,r= ['', 'ATTR_A', ' ', '(HELLO +1L)', ' /*FSDSDF*/']
之后,列表。