如何在一堆文本文件中用''替换所有'0xa0'字符?

时间:2011-03-25 05:24:10

标签: python bash shell text utf-8

我一直在尝试在python中将一堆文本文件批量编辑为utf-8,并且此错误不断弹出。有没有办法在一些python scrips或bash命令中替换它们? 我用了代码:

writer = codecs.open(os.path.join(wrd, 'dict.en'), 'wtr', 'utf-8')
for infile in glob.glob(os.path.join(wrd,'*.txt')):
        print infile
        for line in open(infile):
                writer.write(line.encode('utf-8'))

并且遇到了这些错误:

Traceback (most recent call last):
  File "dicting.py", line 30, in <module>
    writer.write(line2.encode('utf-8'))
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa0 in position 216: unexpected code byte

3 个答案:

答案 0 :(得分:11)

好的,第一点:您的输出文件设置为自动编码写入utf-8的文本,因此在将参数传递给{{1}时不要包含显式的encode('utf-8')方法调用方法。

所以首先要尝试的是在内循环中使用以下内容:

write()

如果这不起作用,那么问题几乎可以肯定是,正如其他人所说,你没有正确解码你的输入文件。

猜测并假设您的输入文件是在writer.write(line) 中编码的,您可以尝试在内循环中快速测试以下内容:

cp1252

次要点:'wtr'是一个无意义的模式字符串(因为写访问意味着读访问)。将其简化为'wt'或甚至只是'w'。

答案 1 :(得分:3)

你在那里省略了一些代码吗?您正在阅读line,但尝试重新编码line2

无论如何,你将不得不告诉Python输入文件的编码是什么;如果你不知道,那么你将不得不在没有编解码器帮助的情况下打开它并进行替换。

答案 2 :(得分:-3)

请认真 - 一个简单的replace()操作将完成这项工作:

line = line.replace(chr(0xa0), '')

此外,codecs.open()构造函数支持要处理的'errors'参数 转换错误。请(自己)阅读。