我目前有以下代码
def removeControlCharacters(line):
i = 0
for c in line:
if (c < chr(32)):
line = line[:i - 1] + line[i+1:]
i += 1
return line
如果要删除多个字符,这是行不通的。
Unicode中有 数百个
控制字符。如果您要清理来自Web或其他可能包含非ASCII字符的其他来源的数据,则需要Python的unicodedata模块。该unicodedata.category(…)
函数返回任何字符的unicode类别代码(例如,控制字符,空格,字母等)。对于控制字符,类别始终以“
C”开头。
此代码段从字符串中删除所有控制字符。
import unicodedata
def remove_control_characters(s):
return "".join(ch for ch in s if unicodedata.category(ch)[0]!="C")
unicode类别的示例:
>>> from unicodedata import category
>>> category('\r') # carriage return --> Cc : control character
'Cc'
>>> category('\0') # null character ---> Cc : control character
'Cc'
>>> category('\t') # tab --------------> Cc : control character
'Cc'
>>> category(' ') # space ------------> Zs : separator, space
'Zs'
>>> category(u'\u200A') # hair space -------> Zs : separator, space
'Zs'
>>> category(u'\u200b') # zero width space -> Cf : control character, formatting
'Cf'
>>> category('A') # letter "A" -------> Lu : letter, uppercase
'Lu'
>>> category(u'\u4e21') # 両 ---------------> Lo : letter, other
'Lo'
>>> category(',') # comma -----------> Po : punctuation
'Po'
>>>
问题内容: 如何从PHP字符串中删除STX等控制字符?我玩过 但发现它消除了很多麻烦。有没有办法 只 删除 控制字符? 问题答案: 如果用控制字符表示前32个ASCII字符和(包括回车等),那么它将起作用: (请注意单引号:双引号的使用会以某种方式导致解析错误。) 可以这样删除换行和回车符(通常写为和),以免删除: 更好地传达了代码的作用。 警告: PHP> = 5.3.0中已弃用,而PHP> =
问题内容: 我有一个来自UI的字符串,其中可能包含控制字符,并且我想删除除 回车符 , 换行符 和 制表 符之外的所有控制字符。 现在,我可以找到两种删除所有控制字符的方法: 1-使用番石榴: 2-使用正则表达式: 问题答案: 如果要删除其他字符或控制uni-code类别中的所有字符,可以执行以下操作 注意: 实际上,这实际上从字符串中除去了(\ u008f)Unicode字符,而不是转义的形式“
问题内容: 我正在尝试使用Python从字符串中删除特定字符。这是我现在正在使用的代码。不幸的是,它似乎对字符串没有任何作用。 如何正确执行此操作? 问题答案: Python中的字符串是不可变的(无法更改)。因此,的效果只是创建一个新字符串,而不是更改旧字符串。你需要重新绑定(分配)到line该变量,以使该变量采用新值,并删除这些字符。 而且,相对而言,你的操作方式会比较缓慢。这也可能会使经验丰富
问题内容: 我正在使用自动化,并使用Jsch连接到远程设备并自动执行一些任务。 我在解析命令结果时遇到问题,因为有时它们带有ANSI Control chars 。 目前,我正在尝试此操作,但我不确定它是否足够完整。 如何从Java字符串中删除ANSI控制字符(VT100)? 问题答案: 大多数ANSI VT100序列的格式为 (可选)后跟一个数字或由分隔的两个数字,后接一些不是数字或。的字符。所
问题内容: 我想从python中的字符串列表中删除所有空字符串。 我的想法如下: 有没有更多的Python方式可以做到这一点? 问题答案: 我会用: Python 3从返回一个迭代器,因此应包装在对的调用中
问题内容: 我使用的框架会不时返回格式错误的字符串,其中包含“空”字符。 例如,“ foobar”表示为:[,f,o,o,b,a,r] 第一个字符不是空格(’‘),因此System.out.printlin()将返回“ foobar”而不是“ foobar”。但是,String的长度是7,而不是6。显然,这使大多数String方法(等于,拆分,子字符串等)变得无用。有没有办法从字符串中删除空字符?