如何在Python中从字符串中删除进纸符

3

我有一个包含以下内容的文本文件:

'\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c'

如你所见,这全是换页符,我想把它们删除。

我尝试了各种解决方案,但不知什么原因,它们似乎都不起作用。例如,我试图删除左侧的'\x0c,右侧的\x0c'和所有其他的\x0c,但输出结果仍然相同。我使用的代码:

import re
import string

with open('AF-40-A-00020539.txt', "r", encoding="ascii") as input_file:
    input_content = input_file.read()
    print(
        input_content.lstrip('\'\x0c')\
            .rstrip('\x0c\'')\
            .strip('\x0c')
            .replace('\x0c', '')
    )

执行后,我得到了这个输出:\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c',与我的预期不符。

这是什么原因?如何去除换页符?

更新,感谢joao的回答: \xHH,其中HH是两个十六进制数字,是一种被认可的转义序列,用于使用相应的十六进制值编写ASCII字符,就像\n表示换行一样。

.replace('\x0c', '')无法正常工作,因为在此字符串字面值中,\xOc被转义了,而在文本文件中,它只是作为纯文本复制。

3个回答

3
这里存在歧义:当你说文件包含\x0c时,它是文件中的一个单独字符,并显示转义序列表示十六进制值0x0c?还是真的是一个由4个字符组成的字符串?你应该尝试用二进制编辑器或len()函数来确定这一点。
我怀疑是第二种情况,因为你说你得到了\x0c作为输出。如果是第一种情况,你会看到^L,或者是一个空行,或者是一些表示不可打印字符的胡言乱语。
如果它是一个单独的字符,那么
s = s.replace('\x0c', '')

这将删除它们。如果它们确实是4个字符,那么

s = s.replace('\\x0c', '')

应该可以工作。请注意额外的反斜杠 \ ,将转义序列转换为4个字符的字符串。


1

我不是100%确定,但尝试在.replace中使用以下内容:

line.replace('\x0C', '')

让我知道 :)


1
你可以使用 re.sub()
import re
string = "Hello, '\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c'World!"
print(re.sub(r"'(\x0c)+'", '', string))

输出:

Hello, World!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接