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

时间:2012-07-09 06:54:07

标签: python file text

我想将用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,但我知道如何进行转换。有人可以帮帮我吗?谢谢!

2 个答案:

答案 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*)用于提取空格

(\(.*\))内,\(实际上匹配(\)匹配).*匹配除换行符之外的任何字符。

所以,在splitr= ['', 'ATTR_A', ' ', '(HELLO +1L)', ' /*FSDSDF*/']之后,列表。