用python转换文件中的文本格式

2024-06-06 12:13:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把用C写的头文件转换成用python写的类

基本上,C中头文件的格式(称为header.c的文件)如下所示:

#define ATTR_A          (HELLO +1L)     /*FSDSDF*/
#define ATTR_B          (HELLO +2L)     /*FSFSSF*/

我想做的是编写一个简单的脚本,它可以从header.c读取文本,然后将格式转换为python计算并将结果存储到名为header.py的文件中。转换后,将是:

ATTR_A        = (HELLO +1L)
ATTR_B        = (HELLO +2L)

我知道如何读取文件以及如何将转换后的结果存储到header.py,但我知道如何进行转换。有人能帮我吗?谢谢!你知道吗


Tags: 文件py文本脚本hello头文件格式header
2条回答

可以使用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)

我认为最好的方法是在这里使用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\u A”

(\s*)用于提取空白

(\(.*\))内部,\(实际上与(\)匹配。.*匹配除换行符以外的任何字符。你知道吗

所以,在splitr= ['', 'ATTR_A', ' ', '(HELLO +1L)', ' /*FSDSDF*/']之后,这是一个列表。你知道吗

相关问题 更多 >