如何从 python 中的字符串中删除换页

how to remove form feed from string in python

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

'\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 是两个十六进制数字,是一个 recognised escape sequence to write ASCII characters using their corresponding hex value,就像 \n 代表换行符一样。

.replace('\x0c', '') 不起作用,因为在此字符串文字 \xOc 中被转义,而在文本文件中,它只是作为纯文本复制。

我不是 100% 确定,但请在 .replace 中试试这个:

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

告诉我:)

您可以使用 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!

这里有一个歧义:当你说文件包含 \x0c 时,文件中的单个字符是否显示为代表十六进制值 0x0c 的转义序列?或者它真的是一个 4 个字符的字符串?您应该尝试使用二进制编辑器或 len() 函数来确定。

我怀疑第二种情况,因为你说你得到 \x0c 作为输出。如果是第一种情况,您会看到 ^L、空白行或一些指示不可打印字符的乱码。

如果是单个字符,则

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

将删除它们。如果他们真的是4个字符,那么

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

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