解析文本文件Python 2.7有困难

2024-10-02 02:31:50 发布

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

使用Python2.7,我想将一个文件作为输入,从中删除一些字符,然后将其写入另一个文件。 我没有完全成功地使用以下代码:

print 'processing .ujc file for transmit'
infile, outfile = open('app_code.ujc','r'), open('app_code_transmit.ujc','w')
data = infile.read()
data = data.replace("#include <avr/pgmspace.h> const unsigned char uj_code[] PROGMEM = {", "")
data = data.replace("0x", "")
data = data.replace(", ", "")
data = data.replace("};", "")
outfile.write(data)

输入文件(示例)为:

#include <avr/pgmspace.h>

const unsigned char uj_code[] PROGMEM = {

    0x00, 0x03, 0xB1, 0x4B, 0xEC, 0x00, 0x1D, 0x00, 0x1E, 0x00, 0x21, 0x00, 0x02, 0x6A, 0x00, 0x02, 
    0x6A, 0x00, 0x02, 0xE3, 0x3F, 0x00, 0x1F, 0x00, 0x02, 0x2C, 0x00, 0x01, 0x3B, 0x00, 0x02, 0x36, 0x00, 0x00
};

而这应该变成(etc是上述内容的延续,实际上并不存在):

0003B14BEC001D001E002100026A00(...etc...)02360000

上面的代码是:

#include <avr/pgmspace.h>

const unsigned char uj_code[] PROGMEM = {

    0003B14BEC001D001E002100026A00(...etc...)
    02360000

换言之,我想删除所有字符、空行和0x之类的东西,除了单个连续行中的实际字节,但我对细微差别有点误解,我期待着。有什么帮助吗?你知道吗


Tags: 文件dataincludeetccode字符replaceavr
2条回答

@MKesper是对的。读取文件时,根据操作系统的不同,会有\n或\r\n(行分隔符)。从预期的输出来看,我觉得更好的方法是提取所需的数据,而不是删除不需要的数据。我想从正则表达式得到一些帮助,下面是我的尝试:

import re
print 'processing .ujc file for transmit'
infile, outfile = open('app_code.ujc','r'), open('app_code_transmit.ujc','w')
data = infile.read()
# Expect 0003B14BEC001D001E002100026A00026A0002E33F001F00022C00013B0002360000 to be the output
outfile.write(''.join(re.findall('0x([0-9a-fA-F][0-9a-fA-F])', data)))

更新1:这是基于您没有任何其他0x的假设。否则我们需要更新正则表达式

您的输入文件被拆分为多行,您只需要一行输出。你知道吗

您只需在写入之前去掉任何换行符:

data.strip("\n")

相关问题 更多 >

    热门问题