首页 > 解决方案 > Python在读取文本文件时删除控制字符

问题描述

我想一次读取一个文本文件(.bcp),100k 行,然后写入另一个文件。但是,有几行包含“替换”字符(十六进制值:001A),因此以下代码似乎只在该行之前读取,之后没有任何内容。在写入第二个文件之前,我尝试从所述行中删除该字符,但后来意识到(使用print(lines,"\n"))一旦遇到第一行,就没有任何内容被读取。我用这篇文章来理解“替换”字符并获得十六进制值,但基本上当我在记事本++中打开文件时,它显示为带有黑色背景的“SUB”。请问有人可以帮忙删除那个角色吗?非常感谢!

with open('input' + '\\' + file) as fIn:

while 1:
    lines = fIn.readlines(100000)
    print(lines,"\n")
    if not lines:
        break
    for line in lines :
        #line = re.sub(r'\x001A', '', line)
        line = line.replace(r'\x001A', '')
        line = line.replace(r'\x009D', '')
        fp.write(line)

编辑:我在下面包含了一些示例行。第一行没有 SUB 字符,接下来的两行包含它。因此,当尝试读取 usinglines = fIn.readlines(100000)时,代码会读取第一行,然后读取第二行,直到遇到字符然后退出。您会注意到,当我在此处粘贴行时,SUB 字符会自动删除。

112411115ffg254b|302344|5.1234     |11111111|0|||1000|0|1015|          |0|5.1234     |11111111|1|0|1|1011|0|                                                                                                    |0
112400004eyg9gb5|302345|6.216     |22222222|0|||1001|0|1|          |0|6.216     |22222222|1|0|1|1|0|ù0                                                                                                |0
112200009ex12341|42581|3.119     |33333333|0|||1002|0|1|          |0|3.119     |33333333|1|0|1|1|1|Ù¸                                                                                                |0

在此处输入图像描述

标签: python

解决方案


推荐阅读