我想删除我在阅读文件时找到的所有字符“\ L”。我在读一行时尝试使用此功能:
def cleanString(self, s):
if isinstance(s, str):
s = unicode(s,"iso-8859-1","replace")
s=unicodedata.normalize('NFD', s)
return s.encode('ascii', 'ignore')
但它不会删除此字符。有人知道怎么做吗?
我也尝试使用replace
功能,但效果并不好:
s = line.replace("\^L","")
感谢您的回答。
答案 0 :(得分:3)
可能您没有文字字符^
和L
,但有些内容显示为^L
。
这将是换页符。
s = line.replace('\x0C', '')
。
答案 1 :(得分:2)
^L
(代码点0C
)是一个ASCII字符,因此不会受到ASCII编码的影响。你可以使用一个小的正则表达式过滤掉所有的控制字符(当你在它的同时,过滤掉所有非ASCII的字符串):
import re
def cleanString(self, s):
if isinstance(s, str):
s = unicode(s,"iso-8859-1","replace")
s = unicodedata.normalize('NFD', s)
s = re.sub(r"[^\x20-\x7f]+", "", s) # remove non-ASCII/nonprintables
return str(s) # No encoding necessary
答案 2 :(得分:2)
你差不多正确,你只需要^L
的不同表示。
s = line.replace("\x0c", "")
这是一个函数,它将返回任何控制字符的表示。
def cc(ch):
return chr(ord(ch) & 0x1f)
>>> cc('L')
'\x0c'
某些控制字符具有替代表示形式,常见表示'\r'
为^M
而'\n'
为^J
。这些列在the documentation for string literals中的图表中,基于ASCII control code chart中提供的名称。